Pagina de start a forumului StrikeCS.MyForum.ro
Inregistrare • Cautare • FAQ • Membri • Grupuri • Autentificare
Crearea si utilizarea functiilor PHP

 
Raspunde la subiect    Pagina de start a forumului StrikeCS.MyForum.ro » Diverse Tutoriale Subiectul anterior
Subiectul urmator
Crearea si utilizarea functiilor PHP
Autor Mesaj
zRR
Administrator
Administrator
zRR

Data inscrierii: 20/Aug/2007
Mesaje: 514
Localitate: www.strikecs.myforum.ro

Mesaj Crearea si folosirea functiilor PHP Raspunde cu citat (quote)
Crearea ºi utilizarea funcþiilor

Procesul de executare a unei funcþii se numeºte utilizarea, apelarea sau invocarea funcþiei. Pentru a folosi o funcþie, scrieþi numele funcþiei, urmat de o pereche de paranteze.
De exemplu, funcþia rand(), care genereazã un numãr întreg aleator, poate fi apelatã astfel:

rand();

Majoritatea funcþiilor preiau argumente, reprezentând valori de intrare care influenþeazã operarea ºi rezultatul funcþiei. Pentru a specifica argumente, acestea se insereazã între paranteze; dacã specificaþi mai mult de un argument, fiecare argument trebuie separat de vecinul sãu prin intermediul unei virgule. Argumentul unei funþii poate fi o valoare literalã, o variabilã sau o expresie.
Unele funcþii PHP au argumente opþionale, care pot fi specificate sau omise, în conformitate cu intenþiile dumneavoastrã. De exemplu, funcþia rand() are douã argumente opþionale. Debutantul argument al funcþiei indicã valoarea întreagã cea mai micã pe care o va returna funcþia; al doilea argument indicã valoarea cea mai mare. Dacã omiteþi cele două argumente, funcþia returneazã o valoare cuprinsã între 0 ºi cel mai mare rezultat posibil. Dacã doriþi, puteþi specifica întâiul argument, omiþându-l pe al doilea:

rand(100);

Astfel, funcþia este obligatã sã returneze o valoare cuprinsã între 100 ºi cel mai mare rezultat posibil.
Ca ºi rand(), majoritatea funcþiilor returneazã valori. Puteþi folosi într-o formă valoarea returnatã de o funcþie. O situaþie extrem de frecventã în care se procedeazã astfel o constituie întrebuințarea valorii returnate de o funcþie într-o expresie de atribuire, astfel încât valoarea sã fie accesibilã în mod repetat fãrã a se invoca funcþia de mai numeroase ori.
De exemplu:

$test = rand(1, 15);

Când se cauzează o eroare în timpul execuþiei unei funcþii, PHP genereazã mesaje de eroare.
Uneori, întocmai mesaje de eroare sunt nedorite. În acest caz, puteþi suprima generarea mesajelor de eroare prin prefixarea numelui funcþiei invocate cu ajutorul caracterului @.
De exemplu, pentru a ascunde mesajele de eroare care pot apãrea în timpul execuþiei funcþiei f(), invocaþi aceastã funcþie astfel:

$a = @f(b);


Definirea unei funcþii

În afarã de a utiliza funcþiile din biblioteca de funcþii a limbajului PHP, vã puteþi defini ºi folosi propriile funcþii. Pentru a defini o funcþie, respectaþi prototipul urmãtor:

function nume_functie(nume_argument)
{
// aici se introduce corpul functiei
}

În acest exemplu, nume_functie este numele funcþiei, iar nume_argument este numele argumentului funcþiei. În PHP, numele funcþiilor nu prezintã sensibilitate la diferenþa între majuscule ºi minuscule; ca atare, f() ºi F() reprezintã referiri la aceeaºi funcþie. Cuvântul cheie function, numele funcþiei ºi lista cu argumente alcãtuiesc antetul funcþiei. Termenul de corp al funcþiei se referã la instrucþiunile incluse între parantezele acolade care urmeazã dupã antetul funcþiei. Înstrucþiunile din corpul funcþiei sunt executate atunci când funcþia este apelatã. Dacã doriþi sã definiþi o funcþie care nu are argumente, puteþi omite nume_argument; dacã doriþi sã definiþi o funcþie cu mai multe argumente, puteþi conține argumente suplimentare dupã nume_argument, fiecare argment fiind separat de vecinul sãu prin intermediul unei virgule. Parantezele ºi numele argumentelor incluse între acestea poartã numele de lista cu argumente. Ca exemplu, iatã o funcþie care calculeazã aria unui dreptunghi:

function calculeaza_aria($inaltime, $latime)
{
return $inaltime * $latime;
}

Lista cu argumente a funcþiei calculeaza_aria include argumentele $latime ºi $inaltime. Corpul funcþiei este alcãtuit dintr-o singurã instrucþiune; cu toate acestea, corpul unei funcþii poate conþine un numãr arbitrar de instrucþiuni. Dacã doriþi ca funcþia sã returneze o valoare, trebuie sã determinaþi funcþia sã execute o instrucþiune return care furnizeazã valoarea respectivã. Instrucþiunea return determinã sistarea executãrii funcþiei; nu este necesar ca aceasta sã fie ultima instrucþiune fizicã din trunchiul funcþiei. Dacã definiþi o funcþie care nu are nici o instrucþiune return, funcþia va returna valoarea specialã NULL.


Apelarea unei funcþii

O funcþie definitã de utilizator poate fi apelatã în acelaºi mod ca o funcþie încorporatã. De exemplu:

$aria = calculeaza_aria(2,4);

Valorile argumentelor efective 2 ºi 4 le înlocuiesc pe acelea ale argumentelor formale din corpul funcþiei calculeaza_aria, care se comportã ca ºi cum ar fi fost scrisã astfel:

return 2 * 4;

Atenþie!!
În PHP3, definiþia unei funcþii trebuie sã preceadã linia de program care apeleazã funcþia.
În PHP4, definiþia unei funcþii poate fi plasatã fie anterior liniei de program care apeleazã funcþia, fie dupã aceasta.


Terminarea execuþiei unei funcþii

O instrucþiune return determinã sistarea execuþiei funcþiei care o conþine. În cazul în care doriþi sã sistaþi prelucrarea unui întreg script, puteþi invoca funcþia exit(). Iatã un exemplu:

function stop()
{
exit();
}
echo "Prima linie<br>";
echo "Linia 2<br>";
stop();
echo "Linia 3<br>";

Rezultatul acestui script este afiºarea primelor 2 linii, dar nu ºi a liniei 3. Prin apelarea funcþiei stop() se executã trupul funcþiei respective; la invocarea funcþiei exit(); execuþia scriptului se încheie.


Funcþii recursive

Este posibil ca o funcþie din PHP sã se auto-apeleze. O funcþie care procedeazã astfel se numeºte functie recursiva. Este propus sã nu scrieþi funcþii recursive. Cu toate acestea, puteþi scrie accidental o asemenea funcþie ºi de aceea recomand sã citiþi în continuare. Exemplu:

function recursor()
{
return recursor();
}
$a = recursor();

La invocarea funcþiei recursor(), aceasta invocã degrabă funcþia recursor(), care se auto-invoca instantaneu. Astfel, funcþia recursor() este invocatã în mod repetat, pânã când se realizează o eroare cunoscutã sub numele de depãºire în sens pozitiv a stivei (stack overflow). Dacã programul dvs. se încheie cu o depãºire în sens pozitiv a stivei, o posibilã cauzã poate consta într-o recursie incorectã.


Definirea argumentelor prestabilite

PHP4 va îngăduie sã definiþi funcþii cu argumente prestabilite. Dacã invocaþi o funcþie care are un argument prestabilit, dar nu furnizaþi nici o valoare pentru argumentul respectiv, argumentul ia o valoare prestabilitã specificatã. Exemplu:

function impozit_vanzari($cantitate, $rata=0.07)
{
echo "Cantitate = $cantitate<br>";
echo "Rata = $rata";
return $suma * $rata;
}

$cumparaturi = 123.45
echo "Cumparaturi = $cumparaturi<br>";
$impozit = impozit_vanzari($cumparaturi, 0.08);
echo "Impozit = $impozit<br>";

$cumparaturi = 123.45;
echo "Cumparaturi = $cumparaturi<br>";
$impozit = impozit_vanzari($cumparaturi);
echo "Impozit = $impozit<br>";

Funcþia impozit_vanzari preia douã argumente: un argument obligatoriu, denumit $cantitate, ºi un argument prestabilit, denumit $rata. Dacã apelaþi funcþia ºi furnizaþi un singur argument, valoarea argumentului respectiv se considerã ca fiind valoarea argumentului $cantitate, iar valoarea 0.07 se foloseste ca valoare a argumentului $rata. Astfel, la prima invocare a funcþiei, $rata are valoarea 0.08, specificatã drept al doilea argument al funcþiei. Cu toate acestea, la a doua invocare a funcþiei, $rata are valoarea 0.07, fiindcă este specificatã valoarea unui solitar argument.
Este posibil ca o funcþie sã aibã mai multe argumente prestabilite, dar rezultatul este deseori confuz. Exemplu:

function test($valoare1 = 1, $valoare2 = 2)

Care credeþi cã va fi rezultatul dacã este invocatã urmãtoarea funcþie?

x=test(3);

Cu alte cuvinte, argumentul trebuie întrebuințat ca valoare a variabilei $valoare1 sau ca valoare a variabilei $valoare2? PHP are reguli care controleazã asemenea situaþii, dar regulile respective pot fi derutante. Ca atare, cel mai bine este sã evitaþi problema prin definirea unui singur argument prestabilit ºi prin poziþionarea unui argument prestabilit pe ultima poziþie în lista cu argumente.


tutoriale.far-php.ro

_________________
Crearea si utilizarea functiilor PHP Crearea si folosirea functiilor PHP
Crearea si utilizarea functiilor PHP Crearea si folosirea functiilor PHP
Crearea si utilizarea functiilor PHP Crearea si folosirea functiilor PHP
Crearea si utilizarea functiilor PHP Crearea si folosirea functiilor PHP
Crearea si utilizarea functiilor PHP Crearea si folosirea functiilor PHP
Crearea si utilizarea functiilor PHP Crearea si folosirea functiilor PHP
Crearea si utilizarea functiilor PHP Crearea si folosirea functiilor PHP
04/09/2007 14:51 Vezi profilul utilizatorului Trimite mesaj privat
Afiseaza mesajele pentru a le previzualiza:    
Raspunde la subiect    Pagina de start a forumului StrikeCS.MyForum.ro » Diverse Tutoriale Ora este GMT - 3 ore
Pagina 1 din 1

 
Mergi direct la: 
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum


Powered by phpBB © 2001, 2005 phpBB Group
Design by Freestyle XL / Flowers Online.Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro