Forum und email

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 ($makefoofoo();

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.