BluePink BluePink
XHost
Oferim servicii de instalare, configurare si monitorizare servere linux (router, firewall, dns, web, email, baze de date, aplicatii, server de backup, domain controller, share de retea) de la 50 eur / instalare. Pentru detalii accesati site-ul BluePink.
 
-Drumul tau catre inernet-  
line decor
  HOME
line decor
   
 
9.Utilizarea unei functii

Procesul de executare a unei functii se numeste utilizarea, apelarea sau invocarea functiei. Pentru a folosi o functie, scrieti numele functiei, urmat de o pereche de paranteze.
De exemplu, functia rand(), care genereazã un numãr intreg aleator, poate fi apelata astfel:

rand();
 
Majoritatea functiilor preiau argumente, reprezentand valori, de intrare care influenteaza operarea si rezultatul functiei. Pentru a specifica argumente, acestea se insereaza intre paranteze; daca specificati mai mult de un argument, fiecare argument trebuie separat de vecinul sau prin intermediul unei virgule. Argumentul unei functii poate fi o valoare literala, o variabila sau o expresie.
Unele functii PHP au argumente optionale, care pot fi specificate sau omise, in conformitate cu intentiile dumneavoastra.
 
Cand se produce o eroare in timpul executiei unei functii, PHP genereaza mesaje de eroare. Uneori, asemenea mesaje de eroare sunt nedorite. In acest caz, puteti suprima generarea mesajelor de eroare prin prefixarea numelui functiei invocate cu ajutorul caracterului @. De exemplu,, pentru a suprima mesajele de eroare care pot aparea in timpul executiei functiei f ( ), invocati aceasta functie dupa cum urmeaza:

Y = @f(x);
 
Definirea unei functii
 
In afara de a utiliza functiile din biblioteca de functii a limbajului PHP, va puteti defini si folosi propriile functii. Pentru a defini o functie, respectati modelul urmator:

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

In cadrul modelului, nume_functie este numele functiei, iar nume_argument este numele argumentului functiei, in PHP, numele functiilor nu prezinta sensibilitate la diferenta intre majuscule si minuscule; ca atare, f () si F() reprezinta referiri la aceeasi functie. Cuvantul cheie function, numele functiei si lista cu argumente alcatuiesc antetul functiei. Termenul de corp al functiei se refera la instructiunile incluse intre parantezele acolade care urmeaza dupa antetul functiei. Instructiunile din corpul functiei sunt executate atunci cand functia este apelata.
Daca doriti sa definiti o functie care nu are argumente, puteti omite nume_argument; daca doriti sa definiti o functie cu mai multe argumente, puteti include argumente suplimentare dupa nume_argument, fiecare argument fiind separat de vecinul sau prin intermediul unei virgule. Parantezele si numele argumentelor incluse intre acestea poarta numele de lista cu argumente. Ca exemplu, iata o functie care calculeaza aria unui dreptunghi:

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

Lista cu argumente a functiei calculeaza_arie include argumentele $latime si $inaltime. Corpul functiei este alcatuit dintr-o singura instructiune; cu toate acestea, corpul unei functii poate contine un numar arbitrar de instructiuni. Daca doriti ca o functie sa returneze o valoare, trebuie sa determinati functia sa execute o instructiune return care furnizeaza valoarea respectiva. Instructiunea return determina sistarea executarii functiei; nu este necesar ca aceasta sa fie ultima instructiune fizica din corpul functiei. Daca definiti o functie care nu are nici o instructiune return, functia va returna valoarea speciala NULL.
Apelarea unei functii definite de utilizator
 
O functie definita de utilizator poate fi apelata in acelasi mod ca o functie incorporata. De exemplu, iata o instructiune care apeleaza functia calculeaza_arie:

$arie = calculeaza_arie(2,4);
 
Functii recursive
 
Este posibil ca o functie din PHP sa se auto-apeleze. O functie care procedeaza astfel se numeste functie recursiva. Totusi, daca nu ati studiat informatica, este recomandabil sa nu scrieti functii recursive. Cu toate acestea, puteti scrie accidental o asemenea functie, deci este util sa stiti unele notiuni referitoare la aceasta.
Programul urmator defineste si invoca o functie recursiva simpla:

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

La invocarea functiei recursor(), aceasta invoca imediat functia recursor(), care se auto-invoca instantaneu. Astfel, functia recursor() este invocata in mod repetat, pana cand se produce o eroare cunoscuta sub numele de depasire in sens pozitiv a stivei, (stack overflow). Daca programul dumneavoastra se incheie cu o depasire in sens pozitiv a stivei, o posibila cauza poate consta intr-o recursie incorecta.
 
<titlu>Definirea argumentelor prestabilite</titlu>
PHP 4 va permite sa definiti functii cu argumente prestabilite. Daca invocati o functie care are un argument prestabilit, dar nu furnizati nici o valoare pentru argumentul respectiv, argumentul ia o valoare prestabilita specificata. Iata un exemplu simplu:

function impozit_vanzari($cantitae , $rata = 0.0725)
{
    echo "<BR>cantitate=$cantitate";
    echo "<BR>rata=$rata";
    return $suma * $rata;
}

$cumparaturi = 123.45;
echo "<BR>cumparaturi = $cumparaturi";
$impozit = impozit_vanzari($cumparaturi,0.08);
echo "<BR>impozit = $impozit";

$cumparaturi = 123.45;
echo "<BR>cumparaturi = $cumparaturi";
$impozit = impozit_vanzari($cumparaturi);
echo "<BR>impozit = $impozit";

Functia impozit_vanzari preia doua argumente: un argument obligatoriu, denumit $cantitate, si un argument prestabilit, denumit $rata. Daca apelati functia si furnizati un singur argument, valoarea argumentului respectiv se considera ca fiind valoarea argumentului $cantitate, iar valoarea 0.0725 se foloseste ca valoare a argumentului $rata. Astfel, la prima invocare a functiei, $rata are valoarea 0.08, specificata drept al doilea argument al functiei.Cu toate acestea, la a doua invocare a functiei, $rata are valoarea 0.0725 deoarece este specificata valoarea unui singur argument.
 
<titlu>Utilizarea variabilelor globale</titlu>
Asa cum s-a explicat anterior, variabilele globale sunt declarate in afara oricarei functii. Variabilele de formular reprezinta un tip important de variabile globale. Cu toate acestea, puteti crea o variabila globala atribuindu-i acesteia o valoare, atata timp cat instructiunea de atribuire respectiva nu se afla in interiorul corpului unei functii.
Totalitatea locurilor unde este accesibila o variabila se numeste domeniu de existenta al variabilei. In mod prestabilit, variabilele globale nu pot fi accesibile din interiorul corpului unei functii; cu alte cuvinte, domeniul de existenta al unei variabile globale, nu include corpurile functiilor. Daca doriti sa obtineti accesul la o variabila globala in cadrul unei functii, puteti extinde domeniul de existenta al variabilei prin specificarea numelui variabilei in interiorul unei instructiuni global. Instructiunea global are urmatoarea forma:

Global variabila1, variabila2, variabila3

Dupa cuvantul cheie global pot urma una sau mai multe variabile; fiecare variabila este separata de vecina sa prin intermediul unei virgule. Iata un exemplu care prezinta modul de functionare a instructiunii global:

function nu_este_global()
{
    echo "<BR>nuglobal: x=$x";
}
function este_global()
{
     global $x;
     echo "<BR>global: x=$x";
}
$x = 1;
nu_este_global();
este_global;

Daca rulati acest script, veti primi urmatoarele rezultate:

nuglobal: x =
global: x = 1
 
Retineti ca variabila $x primeste numele unei valori in afara corpului oricareia dintre functii; cu alte cuvinte, $x este o variabila globala, in consecinta, variabila $x nu se afla in cadrul domeniului de existenta al functiei nu_este_global() si, in consecinta, instructiunea echo din cadrul functiei nu_este_global() nu afiseaza nici o valoare. Cu toate acestea, functia este_global() contine o instructiune global care extinde domeniul de existenta al variabilei $x; ca atare, instructiunea echo din cadrul functiei este_global() afiseaza valoarea variabilei $x.
 

Utilizarea variabilelor locale si a variabilelor statice
Domeniul de existenta, care descrie unde este disponibila o anumita variabila, reprezinta o importanta caracteristica a variabilelor. O alta caracteristica importanta este durata de viata, care descrie cand este disponibila o anumita variabila.
Variabilele globale sunt create atunci cand li se atribuie o valoare si exista pe durata unui program. Spre deosebire de acestea, variabilele locale sunt create la apelarea functiei asociate si sunt distruse la incheierea apelului la functia respectiva. In consecinta, variabilele locale sunt disponibile numai pe durata executiei functiei asociate.
Argumentele functiilor constituie un tip important de variabila locala. Cu toate acestea, puteti crea o variabila locala prin simpla atribuire a unei valori unei variabile din interiorul unei functii. Pentru a ilustra deosebirea dintre variabilele locale si cele globale, iata un script care defineste o variabila locala denumita $x si o variabila globala cu acelasi nume:

function are_local()
{
   $x = 2;
   echo "<BR>In corpul functiei: x = $x";
}
$x = 1
echo "<BR>In corpul scriptutlui: x = $x";
are_local();
echo "<BR>In corpul scriptului: x = $x";

In cazul in care rulati acest script, veti primi urmatoarele rezultate:

In corpul scriptului: x = 1
In corpul functiei: x = 2
In corpul scriptului: x = 1

Remarcati diferenta dintre cele doua variabile, chiar daca numele variabilelor este acelasi. Domeniul de existenta al variabilei globale $x nu se extinde in interiorul corpului functiei are_local(), iar domeniul de existenta al variabilei locale $x nu se extinde dincolo de corpul functiei respective. Cu alte cuvinte, domeniile de existenta ale celor doua variabile sunt complet distincte si, ca atare, PHP nu poate confunda valorile variabilelor respective.
 
 
 
Utilizarea fisierelor incluse
 
Functiile PHP va permit sa obtineri accesul la programe PHP scrise anterior, create de dumneavoastra sau de catre un alt programator in limbajul PHP. Un alt mecanism care va permite sa obtineri accesul la programele scrise anterior il constituie instructiunea require, care are urmatoarea forma:

require(nume_fisier);

Argumentul nume_fisier are forma unui sir, deci o instructiune require caracteristica poate avea urmatorul aspect:

require("fisierul.inc");

Cand este incarcat un script PHP care contine o instructiune require, continutul fisierului specificat - cunoscut sub numele de fisier de includere - este inserat in script,
inlocuind instructiunea require.
 
De exemplu, sa presupunem ca scrieti o aplicatie PHP care este alcatuita din mai multe scripturi, iar fiecare script afiseaza o pagina HTML care contine informatii standard in partea de sus a paginii. Puteti crea un fisier script special, denumit antet.inc, care contine urmatoarele linii de program:

<HTML>
<HEAD>
<TITLE>Aplicatia care pune capac la toate aplicatiile</TITLE>
</HEAD>
<BODY>
<H1>Aceasta este aplicatia care incheie toate aplicatiile</H1>
<H5>Copyring 2005, Fane Programatorul si Compania SRL.</H5>
si asa mai departe…

Prin insertia instructiunii

require("antet.inc");

la inceputul fiecarui script, determinati programul PHP sa includa continutul acelui fisier ca si cum continutul respectiv ar face parte din acel script.