x5d21dm
Functiile definite de utilizator
O functie poate fi definita de utilizator conform sintaxei urmatoare:
function nume_functie( $arg1, $arg2, ..., $argN)
A echo "Exemplu de functie.\n"; return $retval;
SIntr-o functie poate sa apara orice cod PHP valid, chiar alte functii
si definitii de clase.
In PHP3, functiile trebuie sa fie definite inainte de a fi referentiate;
in PHP4 nu exista o asemenea restrictie. PHP nu sustine functii de supraincarcare,
nu se poate anula definirea sau redefini o functie declarata anterior.
PHP3 nu accepta numar variabil de argumente in antetul functiilor, dar
accepta argumente implicite.
Argumentul functiilor
Informatiile pot fi transmise functiilor print-o lista de argumente. In
aceasta lista variabilele si/sau constantele sunt delimitate prin virgula.
PHP accepta transmiterea argumentelor prin valoare (implicit), prin referinta
si argumente cu valori implicite. Listele cu numar variabil de argumente sunt
acceptate doar in versiunea PHP4. Un efect similar poate fi obtinut in
PHP3 transmitand functiei un tablou de argumente.
Exemplu:
function takes_array( $input)
A echo "$inputa0i + $inputa1i = ", $inputa0i + $inputa1i;
STransmiterea argumentelor prin referinta
Implicit, argumentele functiilor sunt transmise prin valoare (in sensul
ca schimbarea valorii argumentului in interiorul functiei nu se reflecta
si in afara functiei). Daca doriti sa permiteti unei functii sa modifice
argumentele sale, acestea trebuie transmise prin referinta.
Daca vreti ca un argument al unei functii sa fie transmis prin referinta, trebuie
sa precedati cu un '&' numele argumentului in definitia functiei,
ca in exemplul de mai jos (exemplul 2.8.1):
function add_some_extra( &$string)
A
$string .= 'and something extra.';
S
$str = 'This is a string, '; add_some_extra( $str); echo $str; // Se va afisa This is a string, and something extra.Daca vreti sa
transmiteti o variabila prin referinta unei functii care nu face acest lucru
in mod implicit, trebuie sa precedati cu un '&' numele argumentului
in apelul functiei (exemplul 2.8.2):
function my_function( $string)
A
$string .= 'and something extra.';
S
$str = 'This is a string, '; my_function( $str); echo $str; // Se va afisa This is a string, my_function( &$str); echo $str; // Se va afisa This is a string, and something extra.Valorile argumentelor
implicite
O functie poate defini valorile implicite ale argumentelor scalare in
stilul C++, ca in exemplul de mai jos:
function makecoffee( $type = "cappucino")
A return "Making a cup of $type.\n";
S echo makecoffee (); echo makecoffee ( "espresso");Rezultatul acestui cod este:
Making a cup of cappucino.
Making a cup of espresso.Valoarea implicita trebuie sa fie o expresie constanta,
nu o variabila sau un membru de clasa. Observati ca atunci cand folositi
argumente implicite, orice astfel de argument trebuie sa fie in lista
argumentelor in dreapta orcarui argument neimplicit, altfel nu vom obtine
rezultatul asteptat.
Considerati exemplul urmator:
function makeyogurt( $type = "acidophilus", $flavour)
A return "Making a bowl of $type $flavour.\n";
S echo makeyogurt( "raspberry"); // Nu merge!!!Rezultatul acestui cod
este:
Warning: Missing argument 2 in call to makeyogurt() in
/usr/local/etc/httpd/htdocs/php3test/functest.html on line 41
Making a bowl of raspberry.Acum comparati cu acesta:
function makeyogurt( $flavour, $type = "acidophilus")
A return "Making a bowl of $type $flavour.\n";
S echo makeyogurt( "raspberry"); // Merge!!!
/* Afiseaza:
Making a bowl of acidophilus raspberry. */Liste cu numar variabil de argumente
PHP4 accepta liste cu numar variabil de argumente in functiile definite
de utilizator. Acest lucru se obtine usor, utilizand functiile funct_num_args,
funct_get_arg si funct_get_args.
Valorile returnate de functii
Valorile sunt returnate folosind optional instructiunea return. Poate fi returnat
orice tip de rezultat, inclusiv tablouri si obiecte:
function square( $num)
A return $num * $num;
S echo square( 4); // Se afiseaza 16Nu puteti returna valori multiple dintr-o
functie, dar rezultate asemanatoare pot fi obtinute prin returnarea unui tablou:
function small_numbers()
A return array( 0, 1, 2);
S list( $zero, $one, $two) = small_numbers();Pentru a returna o referinta dintr-o
functie, trebuie folosit operatorul '&' atat in declaratia functiei
dar si cand atribuiti valoarea returnata unei variabile, ca in exemplul
de mai jos:
function &returns_reference()
A return &$someref;
S
$newref = &returns_reference();Functii variabile
PHP sustine conceptul de functii variabile. Aceasta inseamna ca daca numele
unei variabile este urmat de paranteze, PHP va cauta o functie cu acelasi nume
si va incerca sa o execute.
Exemplul 2.8.3:
function fct()
A echo "In fct()<br>\n";
S function bar( $arg = '')
A echo "In bar(): argument was '$arg'<br>\n";
S
$func = 'fct';
$func();
$func = 'bar';
$func( 'test');