Funktioner
Table of Contents
Användardefinierade funktioner
En funktion kan definieras med följande syntax:
Example#1 Pseudokod för att demonstrera funktionsanvändning
<?php
function foo ($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Exempelfunktion.\n";
return $retval;
}
?>
Vilken giltig PHP-kod som helst kan förekomma inne i en funktion. Till och med andra funktioner och class-definitioner.
I PHP 3 så måste funktionerna vara definierade före de används. I PHP 4 är detta inte nödvändigt. Förutom när en funktion är villkorligt definierad som de två exemplen nedan.
När en funktion är definierad i ett villkorsblock som de två exemplen visar så måste funktiondefinitionen köras före funktionen blir anropad.
Example#2 Villkorliga funktioner
<?php
$makefoo = true;
/* Vi kan inte anropa foo() from här
eftersom den inte existerar än.
Men vi kan anropa bar() */
bar();
if ($makefoo) {
function foo ()
{
echo "Jag existerar inte innan programkörningen når mig.\n";
}
}
/* Nu kan vi säkert anropa foo()
eftersom $makefoo är satt till true */
if ($makefoo) foo();
function bar()
{
echo "Jag existerar direkt vid programstart\n";
}
?>
Example#3 Funktioner inuti funktioner
<?php
function foo()
{
function bar()
{
echo "Jag existerar inte förrän foo() har blivit anropad.\n";
}
}
/* Vi kan inte anropa bar() än
eftersom den inte existerar. */
foo();
/* Nu kan vi anropa bar(),
foo() har körts och gjort
bar() tillgänglig. */
bar();
?>
PHP stödjer inte funktionsöverlagring. Det är heller inte möjligt att avdefiniera eller omdefiniera tidigare deklarerade funktion.
Note: Funktionsnamn är inte teckenkänsliga men det är smartast och anses som god sed att anropa funktionen som den ser ut i deklarationen.
PHP 3 stödjer inte funktioner med varierbart antal argument men stödjer standardvärlden för argument i funktioner (se standardvärden för argument för mer information). PHP 4 stödjer båda: se Argumentlistor med varierbar längd och funktionsreferenserna för func_num_args(), func_get_arg(), och func_get_args() för mer information.