PHP

Egna funktioner

Det går också att skapa egna funktioner i PHP. Varför är detta bra kanske du frågar dig? Därför att det är snyggt säger en del och därför att det är smidigt kanske andra säger. Både och är nog ett bra svar. Istället för att skriva trettio rader kod inne i HTML-koden går det att lägga samma sak i en funktion någon annanstans i filen eller i en annan fil för att sedan bara anropa funktionen från HTML-koden. Alltså snyggare och mer lättläst. Dessutom kanske uppgiften som funktionen löser finns med flera gånger om på webbsidan. Vi slipper nu skriva ut koden för hela uppgiften flera gånger, utan anropar bara funktionen när det behövs.

Ett par saker kan vara bra att tänka på när man skriver en funktion som ska användas senare i koden eller av ett annat skript. Kommentera vad funktionen gör för att lättare kunna använda den vid ett senare tillfälle. Välj också ett passande namn redan från början. Ett passande namn beskriver på ett kort och koncist sätt vad funktionen har för uppgift. Om det blir ett för långt namn kanske det inte är din fantasi att komma på bra namn som det är fel på, förmodligen är det funktionen som gör för mycket. Det är bra om varje funktion har en avgränsad uppgift.

Tänk ut i ord vilken uppgift som du vill att en funktion eller kodsnutt ska lösa. Omvandla sedan detta steg för steg till PHP genom att slå upp vilka av PHP's funktioner som löser de delmål som varje steg i din beskrivning ska lösa.

Vi ska prova på att skriva en egen funktion för att använda på inloggningssidan på Nikes site. Istället för att utföra jämförelsen för att kontrollera inloggningen direkt i if-satsen låter vi en funktion ta över uppgiften. Från if-satsen behöver vi nu bara anropa funktionen och använda svaret. Eftersom if-satsen bara är intresserad av svaret och inte hur det tas fram är detta också mycket logiskt att göra.

Funktionen får följande utseende

function checkLogin($user, $pass)
{
	return (($user == "webbmaster") && ($pass == "secret"));
}

Funktionskroppen består av en enda rad som gör flera saker. Dels finns de inre satserna som tar reda på om rätt användarnamn och lösenord har angetts

($user == "webbmaster")

($pass == "secret")

Båda dessa ger ifrån sig varsitt sanningsvärde som läggs ihop till ett enda sanningsvärde med den logiska operatorn &&

(($user == "webbmaster")  &&  ($pass == "secret"))

Vi vill ju kunna fråga funktionen om inloggningen var korrekt så vi låter funktionen returnera hela uttrycket som är sant om inloggningen stämmer och falskt annars.

	return (($user == "webbmaster") && ($pass == "secret"));

Anropet till funktionen som kommer från if-satsen ser ut enligt följande

if (checkLogin($username, $password)) 
{
 ...
}

Inloggningen med hjälp av den extra funktionen är nu klar och vi kan titta på resultatet och koden. Resultatet blir precis som innan fast med en lite annorlunda kod.

Resultat

Kod