O funcție poate fi definită folosind o sintaxă precum următoarea:
Exemplul #1 Pseudocod pentru a demonstra utilizările funcțiilor
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Example function.\n";
return $retval;
}
?>
Orice cod PHP valid poate apărea în interiorul unei funcții, chiar și alte funcții și definiții de clasă.
Numele funcțiilor urmează aceleași reguli ca și alte etichete în PHP. Un nume valid de funcție începe cu o literă sau liniuță de subliniere, urmată de orice număr de litere, cifre sau liniuțe de subliniere. Ca expresie regulată, ar fi exprimată astfel:
.
^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
Sfat: Consultați și Ghidul de denumire a zonei utilizatorului.
Funcțiile nu trebuie definite înainte de a fi referite, cu excepția cazului în care o funcție este definită condiționat, așa cum se arată în cele două exemple de mai jos.
Când o funcție este definită într-o manieră condiționată, cum ar fi cele două exemple prezentate. Definiția sa trebuie procesată înainte de a fi apelată.
<?php
$makefoo = true;
/* Nu putem a
apela foo() de aici
deoarece nu există încă,
dar putem apela bar() */
bar();
if ($makefoo) {
function foo()
{
echo "I don't exist until program execution reaches me.\n";
}
}
/* Acum putem a apela în
siguranță foo()
deoarece $makefoo a fost evaluat la adevărat */
if ($makefoo) foo();
function bar()
{
echo "I exist immediately upon program start.\n";
}
?>
<?php
function foo()
{
function bar()
{
echo "I don't exist until foo() is called.\n";
}
}
/* Nu putem a apela bar() încă
deoarece nu există. */
foo();
/* Acum putem apela bar(),
Procesarea lui foo()
a făcut acest lucru accesibil. */
bar();
?>
Toate funcțiile și clasele din PHP au sfera globală – pot fi apelate în afara unei funcții chiar dacă au fost definite în interior și invers.
PHP nu acceptă supraîncărcarea funcțiilor și nici nu este posibilă nedefinirea sau redefinirea funcțiilor declarate anterior.
Notă: Numele de funcții nu țin cont de majuscule și minuscule pentru caracterele ASCII de la A
la Z
, deși de obicei este o formă bună de a apela funcții așa cum apar în declarația lor.
Atât numărul variabil de argumente, cât și argumentele implicite sunt acceptate în funcții. Consultați și referințele de funcție pentru func_num_args(), func_get_arg() și func_get_args() pentru mai multe informații.
Este posibil să apelați funcții recursive în PHP.
<?php
function recursion($a)
{
if ($a < 20) {
echo "$a\n";
recursion($a + 1);
}
}
?>
Notă: Apelurile recursive de funcții/metode cu peste 100-200 de niveluri de recursivitate pot distruge stiva și pot provoca o terminare a scriptului curent. În special, recursiunea infinită este considerată o eroare de programare.
Sursa: PHP Manual, licența CC BY 3.0. Traducere și adaptare: Nicolae Sfetcu
Lasă un răspuns