Kapitel 12. Funktioner

Innehållsförteckning
Användardefinierade funktioner
Funktionsargument
Returnera värden
Variabelfunktioner
Interna (inbyggda) funktioner

Användardefinierade funktioner

En funktion kan definieras med följande syntax:

Exempel 12-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.

Exempel 12-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";
}

?>

Exempel 12-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.

Not: 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.