Forum und email

Függvények

Table of Contents

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

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

Example#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.

Example#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_definialniize();

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

?>

Example#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();

?>

Minden függvény és osztály láthatósága globális: függvényen kívülről is meghívható, akkor is ha függvényen belül definiálták, és fordítva.

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.

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

Example#4 Rekurzív függvények

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