Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna





Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica

Php


Qdidactic » stiinta & tehnica » informatica » php
Functii in PHP



Functii in PHP


Functii in PHP



In PHP functiile pot fi definite de catre utilizator folosind urmatoarea sintaxa:


function numefunctie($param1, $param2, , $paramN)


In PHP o functie poate fi definita oriunde in cadrul script-ului si in interiorul unei functii poate sa apara orice secventa valida de cod care include definirea de alte functii si definitii de clase. Argumentele unei functii trebuie separate prin virgula, si, implicit, acestea sunt transmise prin valoare. Pentru ca functia sa returneze un rezultat se foloseste constructia return care primeste ca parametru o expresie care reprezinta valoarea functiei. In momentul in care este intalnita constructia return, executia functiei se incheie.




A.     Transmiterea parametrilor prin referinta


Pentru a transmite parametri unei functii prin referinta, fapt care implica modificarea valorii parametrilor si pastrarea noii valori dupa ce executia functiei s-a incheiat, se foloseste operatorul '&' inaintea numelui parametrului formal, in momentul definirii functiei.

Nu exista posibilitatea de supraancarcare a unei functii, de redefinire a ei dupa ce aceasta a fost definita in cadrul scriptului respectiv si nu exista nici posibilitatea de anulare a unei functii.




B.     Parametri cu valori implicite




In PHP parametrii formali pot avea valori implicite, si, in cazul in care parametrul actual lipseste, atunci se va considera ca are valoarea implicita.

In cazul in care se folosesc parametri cu valori implicite este necesar ca orice parametru care are o valoare implicita sa se afle in partea dreapta a tuturor parametrilor pentru care nu se folosesc valori implicite, in caz contrar interpretorul PHP nu poate sa decida carui parametru sa-i atribuie valoarea de pe o anumita pozitie din lista de parametri.







C.     Functii cu numar variabil de parametri


O alta facilitate a limbajului PHP este aceea ca ofera programatorului posibilitatea de a utiliza functii care au un numar nedeterminat de parametri. Functiile care folosesc un numar variabil de parametri nu au nici o particularitate in ceea ce priveste definirea lor. Aceste functii se definesc la fel ca cele prezentate anterior, dar pentru a putea accesa parametri se vor folosi urmatoarele functii predefinite:


- func_num_args( ) - aceasta functie returneaza numarul parametrilor functiei care a apelat-o; daca aceasta functie este apelata din exteriorul unei functii definite de utilizator se va genera un mesaj de avertizare;

- func_get_arg(arg_num) - returneaza valoarea parametrului care se afla pe pozitia arg_num in lista de parametri; primul parametru are numarul de ordine 0; daca este apelata din exteriorul unei functii definite de utilizator se va genera un mesaj de avertizare;

- func_get_args( ) - returneaza un tablou unidimensional care contine valorile parametrilor pe care functia apelanta i-a primit; daca aceasta functie este apelata din exteriorul unei functii definite de utilizator se va genera un mesaj de avertizare.




D.     Valorile returnate de functii


Rezultatul obtinut dupa apelarea unei functii poate avea orice tip. O functie poate sa returneze chiar si liste sau obiecte. In PHP exista un caz special de rezultat numit referinta. Pentru ca o functie sa poata returna o referinta, aceasta trebuie declarata folosindu-se operatorul '&' inaintea numelui functiei. Acest operator trebuie sa apara inaintea numelui functiei si in momentul cand o variabila primeste ca valoare referinta rezultata din apelul functiei.

Spre deosebire de majoritatea limbajelor de programare moderne, o functie PHP poate sa returneze o referinta la o variabila care a fost declarata in interiorul functiei, insa acest lucru nu este indicat deoarece, in anumite cazuri, poate duce la efecte neasteptate ale executarii unui script PHP. In alte limbaje de programare efectele devin uneori fatale.




E.     Variabilele de tip functie


O alta facilitate a limbajului PHP in ceea ce priveste functiile este aceea ca suporta variabile de tip functie. Acest lucru este util atunci cand se folosesc liste de functii pentru prelucrarea anumitor tipuri de date. Pentru a atribui un nume de functie unei variabile in PHP se foloseste aceeasi constructie ca in cazul atribuirii unui sir de caractere, si anume, o variabila va primi ca valoare numele functiei scris intre ghilimele simple sau duble. In cazul in care interpretorul PHP gaseste un nume de variabila urmata de o lista de parametri, acesta cauta functia pe care variabila o refera si in cazul in care exista, o executa. Variabilele de tip functie nu functioneaza cu constructii ale limbajului ca echo, unset, isset, empty, include etc.



F.      Functii recursive


Este posibil ca o functie din PHP sa se auto-apeleze. O functie care procedeaza astfel se numeste functie recursiva. Este recomandat sa se scrie functii recursive. Cu toate acestea, se poate scrie accidental o asemenea functie.

Sintaxa:


function recursiva()


$a = recursiva();


La invocarea functiei recursiva(), aceasta invoca imediat functia recursiva(), 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 se incheie cu o depasire in sens pozitiv a stivei, o posibila cauza poate consta intr-o recursie incorecta.




G.    Terminarea executiei unei functii


O instructiune return determina sistarea executiei functiei care o contine. In cazul in care se doreste sistarea prelucrarii unui intreg script, se poate invoca functia exit(). Exemplu:


function stop()


echo 'Prima linie<br>';

echo 'Linia doi<br>';

stop();

echo 'Linia trei<br>';


Rezultatul acestui script este afisarea primelor doua linii, dar nu si a liniei trei. Prin apelarea functiei stop() se executa corpul functiei respective; la invocarea functiei exit(); executia scriptului se incheie.

H.    Functii PHP utilizate pentru accesarea si interogarea bazelor de date MySQL


o      Functia mysql_connect


Sintaxa :



resource mysql_connect ([string server $ [, string $ username [, string $ parola [, bool $ new_link [, int client_flags ]]]]] $)


Aceasta functie realizeaza conectarea la un server MySQL. Functia mysql_connect primeste cinci parametri optionali:


- primul reprezinta numele server-ului MySQL si daca lipseste se incearca conectarea la calculatorul curent.

- cel de-al doilea reprezinta numele utilizatorului si in caz ca acesta lipseste se foloseste valoarea root ca nume de utilizator.

- al treilea parametru reprezinta parola utilizatorului si in caz ca lipseste se foloseste sirul vid in momentul conectarii la server.

- al patrulea parametru este de tip logic si are rolul de a indica motorului PHP ca in cazul in care exista o conexiune la acelasi server sa se mai creeze inca una in loc sa se reutilizeze cea existenta.

- ultimul parametru este de tip intreg si reprezinta proprietatile pe care le va avea conexiunea. Acest ultim parametru poate fi o combinatie a valorilor:

a) MYSQL_CLIENT_COMPRESS - indica server-ului ca va trebui sa trimita date comprimate.

b) MYSQL_CLIENT_IGNORE_SPACE - indica server-ului MySQL faptul ca va trebui sa ignore spatiile care urmeaza dupa numele functiilor.

c) MYSQL_CLIENT_INTERACTIVE - indica server-ului MYSQL sa nu inchida conexiunea dupa scurgerea unui anumit interval de timp in care script-ul nu a emis cereri catre acesta.

Functia mysql_connect returneaza valoarea logica FALSE in cazul in care a esuat conectarea la server-ul de baze de date si un identificator de acces la conexiunea catre server-ul MySQL in cazul in care conectarea a reusit.

Exemplu de conectare la baza de date pentru aplicatia care va fi prezentata:


// seteaza informatiile de acces pentru baza de date ca fiind constante

DEFINE ('DB_USER', 'root');

DEFINE ('DB_PASSWORD', '');

DEFINE ('DB_HOST', 'localhost');

DEFINE ('DB_NAME', 'imobiliare');


// creeaza conexiunea

$dbc = @mysql_connect (DB_HOST, DB_USER, DB_PASSWORD) OR die ('Could not connect to MySQL: ' . mysql_error() );


o      Functia mysql_close


Sintaxa:


bool mysql_close ([$ resource link_identifier])


Aceasta functie primeste ca parametru un identificator de acces la o conexiune spre un server MySQL si realizeaza inchiderea acesteia.


o      Functia mysql_ping


Sintaxa:


bool mysql_ping ([ resource $link_identifier ] )


Functia mysql_ping verifica daca server-ul de MySQL a inchis conexiunea sau nu. Aceasta nu are nici un parametru si returneaza valoarea logica TRUE in cazul in care conexiunea nu a fost inchisa si valoarea logica FALSE in caz contrar.


o      Functia mysql_create_db


Sintaxa:


bool mysql_create_db ( string $database_name [, resource $ link_identifier ] )


Aceasta functie este utilizata pentru a crea o noua baza de date pe server-ul MySQL. Functia are doi parametri. Primul este de tip sir de caractere si reprezinta numele bazei de date care va fi creata, iar cel de-al doilea parametru reprezinta identificatorul de acces la conexiunea catre server-ul MySQL. Functia returneaza valoarea logica TRUE in cazul in care a reusit sa creeze baza de date si valoarea logica FALSE in caz contrar.


o      Functia mysql_drop_db


Sintaxa:


bool mysql_drop_db ( string $database_name [, resource $link_identifier ] )


Aceasta functie este folosita pentru a sterge o baza de date. Functia mysql_drop_db are doi parametri. Primul este de tip sir de caractere si reprezinta numele bazei de date care va fi stearsa, iar cel de-al doilea parametru reprezinta identificatorul de acces la conexiunea catre server-ul MySQL. Functia returneaza valoarea logica TRUE in cazul in care s-a reusit stergerea bazei de date si valoarea logica FALSE in caz contrar.


o      Functia mysql_select_db


Sintaxa:


bool mysql_select_db ( string $database_name [, resource $link_identifier ] )


Aceasta functie seteaza baza de date pentru o conexiune catre un server MySQL pentru interogarile care vor urma. Functia mysql_select_db are doi parametri. Primul este de tip sir de caractere si reprezinta numele bazei de date care va fi folosita pentru interogarile ulterioare, iar cel de-al doilea parametru reprezinta identificatorul de acces la conexiunea catre serverul MySQL. Functia returneaza valoarea logica TRUE in cazul in care s-a reusit selectarea bazei de date si valoarea logica FALSE in cazul in care baza de date nu exista sau utilizatorul nu are drepturi de acces la aceasta.

Exemplu:


DEFINE ('DB_NAME', 'continut');

// Selecteaza baza de date

@mysql_select_db (DB_NAME) OR die ('NU s-a putut selecta baza de date: ' . mysql_error() );


o      Functia mysql_query


Sintaxa:


resource mysql_query ( string $query [, resource $link_identifier ] )


Aceasta functie se foloseste pentru a interoga o anumita baza de date. Functia are 3 parametri:


- primul este de tip sir de caractere si reprezinta cererea emisa server-ului MySQL;

- al doilea parametru reprezinta identificatorul de acces al unei conexiuni catre server;

- al treilea parametru este optional si de tip intreg si reprezinta modul in care va fi returnat rezultatul.

Ultimul parametru poate avea valorile MYSQL_USE_RESULT sau MYSQL_STORE_RESULT. In cazul in care ultimul parametru lipseste, pentru interogare se va folosi valoarea MYSQL_STORE_RESULT, iar rezultatul primit va fi stocat in zone tampon pana cand va fi utilizat. Daca, pentru ultimul parametru, se foloseste valoarea MYSQL_USE_RESULT, atunci rezultatul primit nu va fi stocat, deoarece va fi procesat imediat dupa apelul functiei. Utilizarea functiei folosind valoarea MYSQL_USE_RESULT pentru ultimul parametru are acelasi efect cu aplicarea functiei mysql_unbuffered_query fara a folosi ultimul parametru. Functia returneaza o valoare de tip resursa in cazul in care a fost apelata folosind o interogare care presupune primirea unui rezultat cum sunt comenzile SELECT, SHOW, EXPLAIN si DESCRIBE si nu a aparut nici o eroare, iar in cazul aparitiei unei erori, este returnata valoarea logica FALSE. In cazul in care functia mysql_query este apelata pentru o interogare care nu presupune primirea unui rezultat, este returnata valoarea logica TRUE si valoarea logica FALSE in cazul aparitiei unei erori.

Exemplu de interogare a bazei de date din aplicatie in care se face selectia unor  imobile din tabelul „imobil” si din tabelul „imobil_asociere”:


$query = 'SELECT tip_imobil, oras, pret, camere, suprafata, tip_incalzire, strada, compartimentare, confort, etaj, nr_bai, nr_balcoane, an_constructie, structura_rezistenta, regim_inaltime, dotari, alte_info, tranzactie_id, thumb, thumb_description, data_adaugarii FROM imobil LEFT JOIN imobil_asociere USING (imobil_id) WHERE imobil.imobil_id=$uid';


o      Functia mysql_unbuffered_query


Sintaxa:


resource mysql_unbuffered_query ( string $query [, resource $link_identifier ] )


Aceasta functie se foloseste pentru a interoga o anumita baza de date si are aceeasi parametri cu functia anterioara. Diferenta dintre aceasta functie si mysql_query este aceea ca, in cazul functiei mysql_unbuffered_query, daca ultimul parametru lipseste, se foloseste la interogarea bazei de date valoarea MYSQL_USE_RESULT.


o      Functia mysql_real_escape_string


Sintaxa:


string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier])


Aceasta functie este utila in momentul in care se doreste introducerea in cadrul unei interogari a unui sir de caractere care nu poate fi interpretat corect de catre server-ul MySQL si realizeaza transformarea sirului intr-unul care poate fi interpretat. Functia mysql_real_escape_string are doi parametri. Primul este de tip sir de caractere si reprezinta sirul care va fi transformat, iar cel de-al doilea reprezinta identificatorul de acces la o conexiune catre un server MySQL. Functia returneaza un sir de caractere care poate fi interpretat corect de catre server-ul MySQL. De exemplu, daca apelam aceasta functie pentru sirul de caractere 'D'apoi' vom obtine rezultatul 'D'apoi', deoarece caracterul ' (apostrof) are o alta semnificatie pentru server-ul MySQL daca nu e precedat de caracterul ''.



o      Functia mysql_free_result


Sintaxa:


bool mysql_free_result ( resource $result )


Aceasta functie se foloseste pentru a elibera memoria alocata stocarii unui rezultat primit in urma unei interogari de la un server MySQL. Functia mysql_free_result are un singur parametru, si anume o variabila de tip resursa a carei valoare a fost setata folosind una dintre functiile mysql_query sau mysql_unbuffered_query. Functia returneaza valoarea logica TRUE in cazul in care a reusit sa elibereze memoria utilizata de variabila de tip resursa primita ca parametru si valoarea logica FALSE in caz contrar.


o      Functia mysql_num_rows


Sintaxa:


int mysql_num_rows ( resource $result )


Aceasta functie returneaza numarul de inregistrari continute de catre un rezultat primit de la server-ul MySQL. Functia mysql_num_rows are un singur parametru, si anume o variabila de tipul resursa a carei valoare a fost setata folosind una dintre functiile mysql_query sau mysql_unbuffered_query. Functia returneaza un numar intreg care reprezinta numarul de inregistrari continute de variabila de tip resursa primita ca parametru.

Exemplu de adaugare a unui utilizator in baza de date:


// verifica daca adresa de email este valabila


$query = 'SELECT utilizator_id FROM utilizatori WHERE email='$e'';                    

$result = mysql_query ($query) or trigger_error('Query: $queryn<br />MySQL Error: ' . mysql_error());


if (mysql_num_rows($result) == 0) { // daca adresa nu exista in baza de date


//adauga utilizatorul in baza de date

$query = 'INSERT INTO utilizatori (email, parola, nume, prenume, data_inregistrarii) VALUES ('$e', SHA('$p'), '$fn', '$ln', NOW() )';                      

$result = mysql_query ($query) or trigger_error('Query: $queryn<br />MySQL Error: ' . mysql_error());


if (mysql_affected_rows() == 1) { //daca interogarea a rulat bine


echo '<h3 class='multumesc'> Va multumim pentru inregistrarea pe site-ul nostru!</h3>';

include ('footer.html');

exit();             



o      Functia mysql_info


Sintaxa:


string mysql_info ([ resource $link_identifier ] )


Aceasta functie returneaza un sir de caractere care contine informatii referitoare la ultima interogare a unei baze de date in urma careia nu s-a primit nici un rezultat, cum este cazul functiilor INSERT sau UPDATE. Functia mysql_info are un singur parametru care reprezinta identificatorul de acces al unei conexiuni spre un server MySQL.



o      Functia mysql_affected_rows


Sintaxa:


int mysql_affected_rows ([ resource $ link_identifier ] )


In cazul interogarilor in urma carora nu se obtine nici un rezultat, se poate folosi functia mysql_affected_rows pentru a verifica numarul de inregistrari care au fost actualizate la ultima interogare a bazei de date, pentru celelalte tipuri de interogari putandu-se folosi functia mysql_num_rows. Functia mysql_affected_rows are un singur parametru care reprezinta identificatorul de acces al unei conexiuni spre un server MySQL si returneaza un numar intreg, care reprezinta numarul de inregistrari actualizate la ultima interogare a bazei de date.


o      Functia mysql_fetch_array


Sintaxa:


array mysql_fetch_array ( resource $result [, int $result_type ] )


Aceasta functie transforma o inregistrare dintr-un rezultat primit de la server-ul MySQL intr-o lista. Functia mysql_fetch_array colecteaza datele referitoare la inregistrarea curenta si le returneaza sub forma unei liste ale carui elemente pot fi accesate folosind numele campurilor, numarul lor de ordine sau folosind ambele moduri. Daca nu mai sunt inregistrari de prelucrat, functia returneaza valoarea logica FALSE. Aceasta functie are doi parametri:


- primul parametru este de tipul resursa, a carui valoare a fost setata folosind una dintre functiile mysql_query sau mysql_unbuffered_query;

- al doilea parametru este optional, este de tip intreg si reprezinta modul in care sa face transformarea.


Cel de-al doilea parametru poate avea una din valorile urmatoare:

- MYSQL_ASSOC - elementele din lista rezultata pot fi accesate folosind doar numele campurilor;

- MYSQL_NUM - elementele din lista rezultata pot fi accesate folosind doar numerele de ordine ale campurilor;

- MYSQL_BOTH - elementele din lista rezultata pot fi accesate folosind ambele moduri prezentate anterior;

Exemplu:


//calculeaza numarul inregistrarilor

$query = 'SELECT COUNT(*) FROM student ORDER BY nume DESC';

$result = @mysql_query ($query);    

$row = mysql_fetch_array ($result, MYSQL_NUM);

$num_records = $row[0];


o      Functia mysql_fetch_assoc


Sintaxa:


array mysql_fetch_assoc ( resource $result )


Aceasta functie transforma o inregistrare dintr-un rezultat primit de la server-ul MySQL intr-o lista si are acelasi efect cu cel al folosirii functiei mysql_fetch_array, folosind pentru cel de-al doilea parametru valoare MYSQL_ASSOC.



o      Functia mysql_stat


Sintaxa:


string mysql_stat ([ resource $link_identifier ] )


Aceasta functie returneaza un sir de caractere care reprezinta statusul server-ului MySQL si are un singur parametru care reprezinta identificatorul de acces la o conexiune catre un server MySQL.











Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright