MadaLino
Moderator
 Din: Hotel Paradis
Inregistrat: acum 17 ani
Postari: 240
|
|
Īn PHP funcţiile pot fi definite de către utilizator folosind următoarea sintaxă:
function numef ($param1, $param2, ..., $paramN) { // instructiuni }
Īn PHP o funcţie poate fi definită oriunde īn cadrul script-ului şi īn interiorul unei funcţii poate să apară orice secvenţă validă de cod care include definirea de alte funcţii şi definiţii de clase. Argumentele unei funcţii trebuie separate prin virgulă, şi, implicit, acestea sunt transmise prin valoare. Pentru ca funcţia să returneze un rezultat se foloseşte construcţia return care primeşte ca parametru o expresie care reprezintă valoarea funcţiei. Īn momentul īn care este īntālnită construcţia return, execuţia funcţiei se īncheie. Īn exemplul următor se calculează cu ajutorul unei funcţii PHP, pătratul unui număr.
Cod:
<?php function patrat($n) { return $n * $n; } echo "4^2=<b>".patrat(4)."</b>"; ?>
Rezultatul codului va fi:
4^2=16
Transmiterea parametrilor prin referinţă
Pentru a transmite parametri unei funcţii prin referinţă, fapt care implică modificarea valorii parametrilor şi păstrarea noii valori după ce execuţia funcţiei s-a īncheiat, se foloseşte operatorul '&' īnaintea numelui parametrului formal, īn momentul definirii funcţiei. Următorul exemplu indică modul īn care se modifică valoarea unei variabile īn interiorul unie funcţii şi modul īn care această modificare este resimţită īn exteriorul acesteia:
Cod:
<?php function modificInt ($s) { $s .= " prima functie."; echo "<b>In modificInt: </b>".$s."<br>"; } function modificExt (&$s) { $s .= " a doua functie."; echo "<b>In modificExt: </b>".$s."<br>"; }
$s="Iesire din "; echo "<b>In script: </b>".$s."<br>"; modificInt ($s); echo "<b>In script: </b>".$s."<br>"; modificExt ($s); echo "<b>In script: </b>".$s."<br>"; ?>
Rezultat:
In script: Iesire din In modificInt: Iesire din prima functie. In script: Iesire din In modificExt: Iesire din a doua functie. In script: Iesire din a doua functie.
Nu există posibilitatea de supraāncărcare a unei funcţii, de redefinire a ei după ce aceasta a fost definită īn cadrul scriptului respectiv şi nu există nici posibilitatea de anulare a unei funcţii.
Parametri cu valori implicite
Īn PHP parametrii formali pot avea valori implicite, şi, īn cazul īn care parametrul actual lipseşte, atunci se va considera că are valoarea implicită. Următorul exemplu ilustrează modul de folosire al funcţiilor cānd acestea au parametri formali cu valori implicite:
Cod:
<?php function comanda($s='cafea') { return "Ati comandat ".$s."."; }
echo comanda(); echo "<br>"; echo comanda("suc" ; ?>
Rezultat:
Ati comandat cafea. Ati comandat suc.
Īn cazul īn care se folosesc parametri cu valori implicite este necesar ca orice parametru care are o valoare implicită să se afle īn partea dreaptă a tuturor parametrilor pentru care nu se folosesc valori implicite, īn caz contrar interpretorul PHP nu poate să decidă cărui parametru să-i atribuie valoarea de pe o anumită poziţie din lista de parametri. De exemplu, dacă avem o funcţie a cărei declaraţie este
function transform ($baza=10, $nr)
si care returnează rezultatul transformării lui $nr din baza 16 īn baza $baza, a cărei valoare implicită este 10, dacă se apeleaza transform (50), interpretorul nu atribuie valoarea 50 parametrului $nr, ci parametrului $baza şi generează o eroare deoarece lipseste valoarea parametrului $nr.
Funcţii cu număr variabil de parametri
O altă facilitate a limbajului PHP este aceea că oferă programatorului posibilitatea de a utiliza funcţii care au un număr nedeterminat de parametri. Funcţiile care folosesc un număr variabil de parametri nu au nici o particularitate īn ceea ce priveşte definirea lor. Aceste funcţii se definesc la fel ca cele prezentate anterior, dar pentru a putea accesa parametri se vor folosi următoarele funcţii predefinite:
- func_num_args( ) - această funcţie returnează numărul parametrilor funcţiei care a apelat-o; dacă această funcţie este apelată din exteriorul unei funcţii definite de utilizator se va genera un mesaj de avertizare; - func_get_arg(arg_num) - returnează valoarea parametrului care se află pe pozitia arg_num īn lista de parametri; primul parametru are numărul de ordine 0; dacă este apelată din exteriorul unei funcţii definite de utilizator se va genera un mesaj de avertizare; - func_get_args( ) - returnează un tablou unidimensional care conţine valorile parametrilor pe care funcţia apelantă i-a primit; dacă această funcţie este apelată din exteriorul unei funcţii definite de utilizator se va genera un mesaj de avertizare.
Īn continuare aveţi 2 exemple de utilizare a acestor funcţii. Primul exemplu afişează lista parametrilor funcţiei folosind funcţia func_num_argsşi func_get_arg, iar al doilea exemplu afişează aceeaşi listă folosind numai funcţia func_get_args.
Cod:
<?php function lista_parametri() { for ($i=0; $i<func_num_args(); $i++) { print_r(func_get_arg($i)); echo "<br>"; } } echo lista_parametri("Comanda:", 1, "calculator", 2, "procesoare", "configuratie", array("local", 2, 3)); ?>
Cod:
<?php function lista_parametrii() { foreach(func_get_args() as $i) { print_r ($i); echo "<br>"; } } echo lista_parametrii ("Comanda:", 1, "calculator", 2, "procesoare", "configuratie", array("local", 2, 3)); ?>
Rezultat:
Comanda: 1 calculator 2 procesoare configuratie Array ( [0] => local [1] => 2 [2] => 3 )
Valorile returnate de funcţii
Rezultatul obţinut după apelarea unei funcţii poate avea orice tip. O funcţie poate să returneze chiar şi liste sau obiecte. Īn PHP există un caz special de rezultat numit referinţă. Pentru ca o funcţie să poată returna o referinţă, aceasta trebuie declarată folosindu-se operatorul '&' īnaintea numelui funcţiei. Acest operator trebuie să apară īnaintea numelui funcţiei şi īn momentul cānd o variabilă primeşte ca valoare referinţa rezultată din apelul funcţiei. Īn exemplul următor se defineşte o funcţie al cărui rezultat īl constituie o referinţă:
Cod:
<?php function &refer() { global $s; return $s; }
$s = "Acesta este continutul variabilei referite cu ajutorul functiei."; $z = &refer(); echo $z; ?>
Rezultat:
Acesta este continutul variabilei referite cu ajutorul functiei.
Spre deosebire de majoritatea limbajelor de programare moderne, o funcţie PHP poate să returneze o referinţă la o variabilă care a fost declarată īn interiorul funcţiei, īnsă acest lucru nu este indicat deoarece, īn anumite cazuri, poate duce la efecte neaşteptate ale executării unui script PHP. Īn alte limbaje de programare efectele devin uneori fatale.
Variabilele de tip funcţie
O altă facilitate a limbajului PHP īn ceea ce priveşte funcţiile este aceea că suportă variabile de tip funcţie. Acest lucru este util atunci cānd se folosesc liste de funcţii pentru prelucrarea anumitor tipuri de date. Pentru a atribui un nume de funcţie unei variabile īn PHP se foloseşte aceeaşi construcţie ca īn cazul atribuirii unui şir de caractere, şi anume, o variabilă va primi ca valoare numele funcţiei scris īntre ghilimele simple sau duble. Īn cazul īn care interpretorul PHP găseşte un nume de variabilă urmată de o listă de parametri, acesta caută funcţia pe care variabila o referă şi īn cazul īn care există, o execută. Variabilele de tip funcţie nu funcţioneaza cu construcţii ale limbajului ca echo, unset, isset, empty, include etc. Mai jos aveţi un exemplu care ilustrează modul de lucru cu variabilele de tip funcţie.
Cod:
<?php function produs($a, $b) { return $a * $b; }
function suma($a, $b) { return $a + $b; }
$operatie = 'produs'; $rez = $operatie(4, 5); echo "4 * 5 = <b>".$rez."</b><br>"; $operatie = 'suma'; $rez = $operatie(4, 5); echo "4 + 5 = <b>".$rez."</b><br>"; ?>
Rezultat:
4 * 5 = 20 4 + 5 = 9
_______________________________________

" Cui nu-i place cum gandesc multa ii doresc ! "

|
|