17. Fejezet. Függvények

Tartalom
Felhasználó által definiált függvények
Függvényargumentumok
Visszatérési értékek
Függvényváltozók
Belső (beépített) függvények

Felhasználó által definiált függvények

Függvényeket a következő szintaxis szerint definiálhatod:

Példa 17-1. Pszeudokód a függvényhasználat bemutatására

<?php
function foo($arg_1, $arg_2, /* ..., */, $arg_n)
{
    echo
"Példa függvény.\n";
    return
$retval;
}
?>

Bármely érvényes PHP kód megjelenhet egy függvényen belül, akár még más függvény vagy osztály definíciók is.

PHP 3-ban a függvényeket definiálni kell, mielőtt hivatkozás történik rájuk (függvényhívás előtt). PHP 4-től nincs ez a megkötés, kivéve amikor egy függvény feltételesen van definiálva, mint ahogy az alábbi két példa mutatja.

When a function is defined in a conditional manner such as the two examples shown. Its definition must be processed prior to being called.

Példa 17-2. Feltételesen definiált függvények

<?php

$izet_definialni
= true;

/* Innen nem tudjuk meghívni az ize() függvényt mivel még nem létezik,
   viszont a bigyo() függvényt meghívhatjuk */

bigyo();

if (
$izet_definialni) {
  function
ize()
  {
    echo
"Én nem létezem mígnem a program futása eljut hozzám.\n";
  }
}

/* Most nyugodtan meghívhatjuk az ize() függvényt,
   abban az esetben, ha az $izet_definialni változó értéke true */

if ($izet_definialni) ize();

function
bigyo()
{
  echo
"Én létezek már a program futásának megkezdésekor is..\n";
}

?>

Példa 17-3. Függvények függvényekben

<?php
function ize()
{
  function
bigyo()
  {
    echo
"Én nem létezek amíg az ize() nincs meghívva.\n";
  }
}

/* Itt nem hívhatjuk meg a bigyo() függvényt
   mivel még nem létezik. */

ize();

/* Itt már meghívhatjuk a bigyo()-t,
   mivel az ize() függvény feldolgozása
   elérhetővé tette. */

bigyo();

?>

A PHP nem támogatja a függvények polimorfizmusát (többalakúságát), a függvényekdefiníciókat nem lehet megszüntetni vagy már definiált függvényeket újradefiniálni.

Megjegyzés: A függvénynevek nem érzékenyek a kis- és nagybetűkre, bár rendszerint jó gyakorlat olyan formában meghívni őket, ahogyan deklaráltuk.

A PHP 3 nem támogatja a változó számú függvényargumentumokat, bár az argumentumok kezdőértéke támogatott. Lásd az Argumentumok kezdőértéke című részt bővebb információért. A PHP 4 és a későbbi változatok mindkettő lehetőséget támogatják. Lásd a Változó számú függvényargumentumok című részt és a func_num_args(), func_get_arg() és a func_get_args() függvényeket részletesebb leírásért.

PHP-ben lehetséges rekurzív függvények hívása. Kerüld azonban a 100-200 rekurziós szint elérését, mert ez felemésztheti az egész vermet, így a szkript váratlanul befejezheti a futását.

Példa 17-4. Rekurzív függvények

<?php
function rekurzio($a)
{
    if (
$a < 20) {
        echo
"$a\n";
        
rekurzio($a + 1);
    }
}
?>