Användardefinierade funktioner
Användardefinierade funktioner
En funktion kan definieras med syntax som följande:
Exempel #1 Pseudokod för att demonstrera användning av funktioner
<?php function foo($arg_1, $arg_2, /* ..., */ $arg_n) { echo "Exempelfunktion.\n"; return $retval; } ?>
Alla giltiga PHP-kod kan förekomma inuti en funktion, inklusive andra funktioner och klassdefinitioner.
Funktionsnamn följer samma regler som andra etiketter i PHP. Ett giltigt funktionsnamn börjar med en bokstav eller understreck, följt av valfritt antal bokstäver, siffror eller understreck. Som ett reguljärt uttryck skulle det uttryckas så här: `^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$`.
Tips: Se även Userland Naming Guide.
Funktioner behöver inte definieras innan de refereras, förutom när en funktion är villkorligt definierad som visas i de två exemplen nedan.
När en funktion är definierad på ett villkorligt sätt, som i de två visade exemplen, måste dess definition behandlas innan den kan anropas.
Exempel #2 Villkorliga funktioner
<?php $makefoo = true; /* Vi kan inte anropa foo() härifrån eftersom den inte existerar ännu, men vi kan anropa bar() */ bar(); if ($makefoo) { function foo() { echo "Jag existerar inte förrän programmet når mig.\n"; } } /* Nu kan vi säkert anropa foo() eftersom $makefoo utvärderades till true */ if ($makefoo) foo(); function bar() { echo "Jag existerar omedelbart vid programstart.\n"; } ?>
Exempel #3 Funktioner inom funktioner
<?php function foo() { function bar() { echo "Jag existerar inte förrän foo() anropas.\n"; } } /* Vi kan inte anropa bar() ännu eftersom den inte existerar. */ foo(); /* Nu kan vi anropa bar(), foo()'s bearbetning har gjort den tillgänglig. */ bar(); ?>
Alla funktioner och klasser i PHP har det globala omfånget - de kan anropas utanför en funktion även om de definierades inuti och vice versa.
PHP stöder inte funktionsöverlagring, och det är inte möjligt att avdefiniera eller omdefiniera tidigare deklarerade funktioner.
Notera: Funktionsnamn är inte skiftlägeskänsliga för ASCII-tecknen A till Z, men det är vanligtvis god sed att anropa funktioner som de visas i sin deklaration.
Både variabelt antal argument och standardargument stöds i funktioner. Se även funktionsreferenserna för func_num_args(), func_get_arg() och func_get_args() för mer information.
Det är möjligt att anropa rekursiva funktioner i PHP.
Exempel #4 Rekursiva funktioner
<?php function recursion($a) { if ($a < 20) { echo "$a\n"; recursion($a + 1); } } ?>
Notera: Rekursiva funktions-/metodanrop med över 100-200 rekursionsnivåer kan krascha stacken och orsaka att det aktuella skriptet avslutas. Speciellt anses oändlig rekursion vara ett programmeringsfel.
Sidslut
Orginalhemsidan på Engelska : https://www.php.net/manual/en/functions.user-defined.php
PHP
Språkreferens
Språkreferens#Funktioner