| 4. | Egna funktioner |
| 4.1 | Uppbyggnad |
| 4.2 | Globala variabler |
| 4.3 | Fördjupning |
| __________________________ | |
Har du en viss kod som ska utföras på flera olika ställen så behöver du faktiskt inte kopiera koden till varje ställe, du kan istället skapa en funktion som utför allting du vill och sen anropar du bara den varje gång. Dessa funktioner kan du lagra i en annan php-fil som du sedan inkluderar med include(). Då har du fått en riktigt fin struktur på koden som antagligen är lätt att hitta i och lätt att lägga till saker i.
Egna funktioner ser lite ut som if-satser, men utseendet är det enda som de har gemensamt. En funktion består av ett namn, parametrar samt kommandon.
<?php
function Minfunktion($param1, $param2)
{
echo $param1 . $param2;
}
?>
Det där är en giltig funktion som har två stycken parametrar. Man kan ha vilket antal av parametrar man vill, om man vill ha några, det är inget tvång. Funktionen som jag skrev här ovan gör bara en sak, den skriver ut den båda parametrarna direkt. För att anropa den skriver du:
<?php
Minfunktion("Hejsan", "på dig");
?>
När hela funktionen har körts så hoppar den tillbaka därifrån den kördes.
Varje funktion kan också returnera ett värde, om ni undrar vad jag menar med det så ta en titt på 3.5 Praktiska funktioner. Alla de funktionerna returnerar ett värde, count() returnerar antalet värden i en lista, substr() returnerar den valda texten osv. Om vi tar min fina funktion som exempel och vill att den ska returnera båda parametrarna istället för att skriva ut dem.
<?php
function Minfunktion($param1, $param2)
{
return $param1 . $param2;
}
echo Minfunktion("Hejsan", "på dig");
?>
Varje funktion har en egen "variabelsamling", dvs den kan inte normalt nå variabler som är skapade utanför funktioner, detsamma gäller åt andra hållet, script utanför funktionen kan inte nå variabler som är skapade innuti den.
<?php
$text = "Olle";
function Minfunktion()
{
$text = "Pelle";
}
Minfunktion();
echo $text;
?>
Den koden kommer skriva ut Olle eftersom $text-variabeln inte är densamma innanför funktionen som utanför, det är två stycken helt separata variabler. Men det går att komma undan det på ett smidigt sätt, genom att ange variabeln som global.
<?php
$text = "Olle";
function Minfunktion()
{
global $text;
$text = "Pelle";
}
Minfunktion();
echo $text;
?>
Det kommer skriva ut Pelle. Inbyggda variabler som $_GET och $_POST går alltid att nå överallt.
Och visst finns det mer att kunna om funktioner.
Istället för att skicka ett värde som en parameter så kan man skicka själva variabeln, och om funktionen ändrar parametern så ändras värdet i variabeln som man använde som parameter. Lite svårt att förklara, jag ger ett exempel istället.
<?php
$text = "Olle";
function Minfunktion(&$namn)
{
$namn = "Pelle";
}
Minfunktion($text);
echo $text;
?>
Och vad händer tro? Jo, den skriver ut Pelle. Lägg märke till &-tecknet framför parametern i funktionen, det säger att den parametern blir en referens till variabeln som man skickar. Dvs, $text och $namn har i det här fallet exakt samma minne, ändrar man den ena ändras den andra likaså. Användningsområdena för detta är inte så många, men de finns. Säg att man har en funktion som man vill ska returnera två stycken värden, visst kan man returnera en lista men det är ofta lättare att använda referenser.