Menu

Functii si Variabile Globale

1. Utilizarea functiilor

Cred ca deja cunoasteti acest termen numit functii. Ei bine functiile sunt folosite pentru nu a repeta blocuri mari de cod, ne ajuta sa avem codul cat mai scurt. Exemple de functii care deja le stiti: abs, gettype, min.
Functiile se apeleza folosind numele functiei urmat de doua paranteze, deci daca avem o functie numita abs o vom apela cu abs(). Inauntru parantezelor sunt argumentele, argumenetele sunt separate intre ele folosind prin caracterul , , unele functii nu au argumente(de exemplu functia time) iar altele au un numar nelimitat de argumente(de exemplu functia min). Unele functii returneaza date, acele date pot fi atribuite unei variabile. De exemplu functia gettype returneaza tip-ul de date al unei valori/variabile. Functiile au si argumente optionale, argumentele optionale nu sunt obligatorii de introdus dar argumentele normale sunt obligatorii, neadaugarea lor genereaza o eroare. Unele functii accepta doar un anumit tip de date, specificarea lui ne este obligatorie de catre PHP dar acele functii pot genera erori custom setate de cel care le-a facut. Argumentelor li se mai spune si parametrii, sunt exact acelasi lucru, noi vom folosii ambele variante.
Pentru a intelege mai bine functiile vom analiza functia gettype:

Sa incercam acum s-o folosim intr-un cod PHP:
<?php  
echo gettype(1).'<br/>';
echo gettype('PHP');
?>
Output:

2. Crearea functiei

O functie o cream folosind function nume_functie(argumente){ }, observati va rog asemanarea ca la apelare lor, se pune numele functiei iar dupa paranteze, inauntrul parantezelor sunt argumentele. Numele unei functii poate fi format din litere, cifre si caracterul _ dar niciodata nu poate sa inceapa cu un numar(ca la variabile).
Acum vom crea o functie cu doua argumente care returneaza suma lor:
<?php  
function suma($nr1, $nr2){
	return $nr1+$nr2;
}
?>
Observati va rog ca pentru desemnarea valorii returnate se foloseste return urmat de ce dorim sa returneze. Retineti insa ca odata ce ati folosit instructiunea return executarea functiei se opreste(codul dupa return din acea functie nu se mai executa), return este asemanator functiei exit() doar ca nu se opreste executarea scriptului ci functiei. Acum sa dam un exemplu mai complet in care pe langa ca o cream o si apelam:
<?php  
function suma($nr1, $nr2){
	return $nr1+$nr2;
}
echo 'Suma: <b>'.suma(1,10).'</b>';
?>
Output:

O functie poate fi mult mai complexa, acum sa dam un exemplu de functie cu 2 argumente care scade,inmulteste,aduna,imparte cele 2 argumente si le afiseaza pe ecran cu echo, functia nu va returna nimic.
<?php 
function calculeaza($nr1, $nr2){
	echo 'Adunare: <b>'.($nr1+$nr2).'</b><br/>';
	echo 'Scadere: <b>'.($nr1-$nr2).'</b><br/>';
	echo 'Inmultire: <b>'.($nr1*$nr2).'</b><br/>';
	echo 'Impartire: <b>'.($nr1/$nr2).'</b>';
}
calculeaza(5,3);
?>
Output:

Am folosit paranteze deoarece este recomandat ca calculele sa se faca intre paranteze pentru evitarea erorilor si un cod mai frumos. Acum vreau sa va invat ceva foarte interesant. In PHP imparirea cu 0 este imposibila si genereaza o eroare. Uitati urmatorul exemplu:
<?php 
function calculeaza($nr1, $nr2){
	echo 'Adunare: <b>'.($nr1+$nr2).'</b><br/>';
	echo 'Scadere: <b>'.($nr1-$nr2).'</b><br/>';
	echo 'Inmultire: <b>'.($nr1*$nr2).'</b><br/>';
	echo 'Impartire: <b>'.($nr1/$nr2).'</b>';
}
calculeaza(5,0);
?>
Output:

EI bine pentru a suprima(ascunde) o eroare generate de o functie se foloseste caracterul @ inainte functiei , uita-te la exemplul urmator:
<?php 
function calculeaza($nr1, $nr2){
	echo 'Adunare: <b>'.($nr1+$nr2).'</b><br/>';
	echo 'Scadere: <b>'.($nr1-$nr2).'</b><br/>';
	echo 'Inmultire: <b>'.($nr1*$nr2).'</b><br/>';
	echo 'Impartire: <b>'.($nr1/$nr2).'</b>';
}
@calculeaza(5,0);
?>
Output:

Cand nu aveti imparirea unei functii puneti inainte parantezelor care inconjoara imparirea, uite asa: @(5/0).

O functie creata de tine poate avea si argumente optionale, argumentele optionale au nevoie de o valoare default, argumentele optionale sunt facute cu ajutorul atriburii lor in timpul declararii functiei. Urmareste exemplul urmator:

<?php 
# Observati ca am adaugat atribuit PHP argumentului $limbaj, ei bine PHP va fi valoarea default a aceleli variabile
function imi_place($limbaj = 'PHP'){
	return "Mie imi place <b>$limbaj<b>"; // returnam string-ul 
}
echo 'Fara argument: '.imi_place();
echo 'Cu argument: '.imi_place('Programam.Ro');
?>
Output:

In cazul in care avem un argument optional inainte unui argument normal dar nu vrem sa-i schimbam valoarea celui default folosim if despre care vei invata in urmatoarele lectii. O sa intelegi mai multe urmarind exemplul urmator:
<?php  
function imi_place($site = 'Programam.Ro', $orice){
	if($site == null) $site = 'Programam.Ro';
	return "Mie imi place site-ul <b>$site</b> si <b>$orice</b> <br/>";
}
echo imi_place(null, 'programarea');
?>
Output:

Retineti insa ca nu este recomandat sa folositi argumente optionale inaintea celor normale!

3. Variabile Globale

In functii nu putem folosii variabile care nu sunt declarate in interiorul lor. De exemplu:
<?php
$a = 'PHP';  
function test(){
	echo $a;
}
test();
?>
Output:

Dupa cum vedeti genereaza un anunt ca variabila $a nu este definita. Pentru a folosii variabile nedeclarate in interiorul functiei folosim GLOBAL. Exemplu:
<?php
$a = 'PHP';  
function test(){
	GLOBAL $a;
	echo $a;
}
test();
?>
Output:

4. Variabile statice

O instructiune foarte asemanatoare cu GLOBAL , dupa cum probabil ati observat la terminarea functiei variabilele create in ea sunt distruse, cu ajutorul instructiunii STATIC $var1,$var2,$var3... blocati distrugerea variabilelei. Un exemplu:
<?php 
function fara_static(){
	$a .= ' PHP ';
	echo $a;
} 
function cu_static(){
	STATIC $a;
	$a .= ' PHP ';
	echo $a;
}
fara_static();
fara_static();
fara_static();
fara_static();

cu_static();
cu_static();
cu_static();
cu_static();
?>
Output:


Ti-a placut articolul? Asigura-te ca-ti dam de veste cand publicam altele noi.


Tags: Curs Php, Programare Web, Tutoriale, Php

Comments Nota 0 din 0