HackStuff...
Aici veti gasi o gama larga de metode de hack atat pe Windows cat si pe platforme Linux/Unix , programe , tutoriale etc. In acelasi timp veti avea si asistenta help . Precizam ca tot ce se gaseste pe acest site este doar in scop de dezvoltare iar voi va asumati intreaga raspundere pt actiunile savarsite.ENJoY --- by andreony ---
Lista Forumurilor Pe Tematici
HackStuff... | Reguli | Inregistrare | Login

POZE HACKSTUFF...

Nu sunteti logat.
Nou pe simpatie:
OnutzaGirl pe Simpatie
Femeie
24 ani
Galati
cauta Barbat
24 - 51 ani
HackStuff... / Web Design (Scripting) / PHP 3 Moderat de lFx
Autor
Mesaj Pagini: 1
andreony
[admin]

Din: bucharest
Inregistrat: acum 18 ani
Postari: 1062
• FUNCTII IN PHP
Functiile sunt portiuni de cod definite pentru a executa anumite sarcini.
Functiile pot fi chemate de mai multe ori pe parcursul executiei unui program.
Ele primesc argumente (valori de intrare) cu ajutorul carora executa cateva operatii dupa care
returneaza o valoare. Functiile transfera orice valoare primita ca argument in variabile
temporare numite parametrii ce pot fi folositi numai pe parcursul executiei functiei.
Definire :
function <nume_functie> (<parametrii>{
//cod
//cod
}
Ex:
function tva($lei){
$total=$lei*1.19;
return $total;
}
O apelare de forma :
echo tva(100000);
va produce rezultatul 119000.
Pentru returnarea unei valori am folosit cuvantul cheie return.
Functia poate fi apelata si fara argumente :
function tva(){
echo “Valoarea tva este de 19%�;
}
Daca dorim sa transmitem un numar mai mare de parametrii catre functie, atunci ii putem
delimita cu virgula.
function suma($a,$b){
$suma=$a+$b;
return $suma;
}
O apelare de forma : echo suma(5,10);
va produce inevitabil rezultatul 15.
Exemplu practic (functii si switch):
<?
$valuta=�euro�;
$suma=500;
$curseuro=39890;
$cursusd=32800;
switch ($valuta){
case “euro�:
echo calculeaza($suma,$curseuro);
break;
case “usd�:
echo calculeaza($suma,$cursusd);
break;
default:
echo “Nu ati introdus corect valuta�;
}
function calculeaza ($suma,$curs){
return $suma*$curs;
}
?>
Putem observa cu usurinta cum am folosit functia de doua ori, adaptand valorile de intrare
dupa caz (euro sau usd).
Trimiterea variabilelor
- prin valoare :
<?
$a=5;$b=10;
suma($a,$b);
function suma($a,$b){
$a+=$b;
echo “Valoarea lui a in cadrul functiei �.$a.�<br>�;
}
echo “Valoarea lui a dupa rularea functiei �.$a;
?>
Putem observa ca a ia pe rand valoarea 5 (in programul principal), ulterior se transmite
functiei, care copiaza pe o stiva valoarea lui a dupa care in incrementeaza cu valoarea lui b (si ea
copiata intr-o variabila temporara).
La iesirea din functie, a si b din interiorul functiei se distrug, inafara ei variabilele a si b
ramanand nemodificate.
Prin urmare, pe ecran vor fi afisate urmatoarele:
Valoarea lui a in cadrul functiei 15
Valoarea lui a dupa rularea functiei 5
- prin referinta
A doua metoda de a trimite variabile unei functii este prin referinta, mod ce permite
functiei sa modifice valoarea unei variabile, inclusiv inafara functiei.
Pentru a indica trimiterea prin referinta, se adauga in fata variabilei un ampersand.
<?
$a=5;$b=10;
suma($a,$b);
function suma(&$a,$b){
$a+=$b;
echo “Valoarea lui a in cadrul functiei �.$a.�<br>�;
}
echo “Valoarea lui a dupa rularea functiei �.$a;
?>
Vor fi afisate urmatoarele :
Valoarea lui a in cadrul functiei 15
Valoarea lui a dupa rularea functiei 15
Stabilirea valorilor implicite
Sunt situatii cand unul sau mai multi parametrii nu primesc intializarea cu argumente. Ex:
<?
$a=5;$b=10;
suma($a);
function suma($a,$b){
$a+=$b;
echo “Valoarea lui a in cadrul functiei �.$a.�<br>�;
}
?>
Va produce ca rezultat : Valoarea lui a in cadrul functiei 5
Daca totusi dorim ca un parametru sa ia anumita valoare chiar daca nu este primit in
functie ca argument, folosim descrierea functiei dupa cum urmeaza:
<?
$a=5;$b=15;
suma($a);
function suma($a,$b=10){
$a+=$b;
echo “Valoarea lui a in cadrul functiei �.$a.�<br>�;
}
?>
Rezultatul va fi : Valoarea lui a in cadrul functiei 15
O apelare de forma : suma($a,$b) va produce in programul de mai sus rezultatul :
Valoarea lui a in cadrul functiei 20.
Ordinea initializarii parametrilor in functii este de la stanga la dreapta, deci trebuie sa
punem intai parametrii ce ii trimitem ca argumente la apelarea functiei, dupa care, la final
parametrii cu valoare implicita.
Un astfel de program :
<?
$a=5;$b=15;
suma(,$b);
function suma($a=5,$b){
$a+=$b;
echo “Valoarea lui a in cadrul functiei �.$a.�<br>�;
}
?>
desi are setat parametrul a cu valoare implicita, va genera o eroare.
Solutia este inversarea ordinii, lasand parametrii optionali la sfarsit.
In functie de versiunea de PHP pe care rulati puteti face o apelare a functiei cu mai putine
argumente decat definitia, chiar daca nu sunt asignate valori implicite parametrilor. Ex :
<?
$a=5;$b=15;
suma($a);
function suma($a,$b){
$a+=$b;
echo “Valoarea lui a in cadrul functiei �.$a.�<br>�;
}
?>
va returna Valoarea lui a in cadrul functiei 5
cu cel mult un mesaj de atentionare (warning).
Un minus al trimiterii parametrilor prin referinta este urmatorul :
<?
suma(5,10);
function suma(&$a,$b){
$a+=$b;
echo “Valoarea lui a in cadrul functiei �.$a.�<br>�;
}
?>
Aparent programul nu prezinta nici o eroare.
Totusi, la o examinare mai atenta se poate vedea ca parametrul a este initializat prin
referinta fata de un intreg (nu o variabila).
Prin urmare modificarea lui a ar echivala cu modificarea intregului 5, nu al continutului
unei variabile (similar cu 5=5+10).
Programul va prezenta eroarea “Only variables can be passed by reference�.
Locul variabilelor in program
Variabilele din interiorul functiilor nu se pot vedea in exteriorul lor (se distrug la
terminarea functiei) decat daca sunt transmise ca referinta.
Variabilele pot fi :
- globale
- locale
Variabilele globale sunt variabilele ce isi mentin existenta pe parcursul executiei
intregului program, in timp ce variabilele locale sunt variabilele din interiorul functiilor
ce isi inceteaza existenta dupa terminarea functiei.
Ex :
<?
$salariu=800;
$taxe=0.25;
calculeaza($salariu,$taxe);
function calculeaza ($salariu,$taxe){
$salariu_net=$salariu*(1-$taxe);
//salariu_net este o variabila locala functiei
echo “Salariul net este : “.$salariu_net;
//se va afisa Salariul net este : 600
}
//daca in schimb afisam in exterior
echo “Salariul net este : “.$salariu_net;
//se va afisa doar string –ul Salariul net este :
?>
Ex 2:
<?
$salariu=800;
$taxe=0.25;
calculeaza($salariu,$taxe);
function calculeaza ($salariu,$taxe){
$salariu*1-$taxe);
//salariu este o variabila locala functiei
echo “Salariul net este : “.$salariu;
//se va afisa Salariul net este : 600
}
//daca in schimb afisam in exterior
echo “Salariul net este : “.$salariu;
//se va afisa Salariul net este : 800
?>
Daca dorim o vizualizare globala a variabilelor locale functiei avem 2 posibilitati :
- le trimitem ca referinta
- le asociem parametrul global inainte de a opera cu variabilele sau folosind vectorul
$GLOBALS[]
Ex 3:
<?
$salariu=800;
$taxe=0.25;
calculeaza($taxe);
function calculeaza ($taxe){
global $salariu;
$salariu*1-$taxe);
//salariu este o variabila globala
echo “Salariul net este : “.$salariu;
//se va afisa Salariul net este : 600
}
//daca afisam in exterior
echo “Salariul net este : “.$salariu;
//se va afisa Salariul net este : 600
//pentru ca $salariu este tratata ca o variabila globala
?>
Similar se poate folosi vectorul $GLOBALS[];
Ex 4:
<?
$salariu=800;
$taxe=0.25;
calculeaza($taxe);
function calculeaza ($taxe){
$GLOBALS[“salariu�]*1-$taxe);
//salariu este o variabila globala
echo “Salariul net este : “.$GLOBALS[“salariu�];
//se va afisa Salariul net este : 600
}
//daca afisam in exterior
echo “Salariul net este : “.$salariu;
//se va afisa Salariul net este : 600
//pentru ca $salariu este tratata ca o variabila globala
?>
Variabilele statice – sunt folosite atunci cand este necesar ca acestea sa existe pe
parcursul mai multor apelari ale functiilor, fara a mai fi necesara o reatribuire.
Ex 1:
<?
function vizitatori(){
return ++$vizitatori;
}
//un apel de forma
echo vizitatori();
//va afisa 1
//la urmatorul apel
echo vizitatori();
//se va afisa tot 1
?>
Este destul ne neplacut ca pe parcursul unei numaratori sa aveti variabile ce se reseteaza
la fiecare apelare a functiei. Pentru a asigura persistenta variabilei, se foloseste cuvantul cheie
static.
Ex 2:
<?
function vizitatori(){
static $vizitatori;
return ++$vizitatori;
}
//un apel de forma
echo vizitatori();
//va afisa 1
//la urmatorul apel
echo vizitatori();
//se va afisa 2
?>


_______________________________________
------ eVoLuTiOn ------

pus acum 18 ani
   
Pagini: 1  

Mergi la