Sunteți pe pagina 1din 13

LIMBAJUL PHP

Ce este PHP?
PHP este un limbaj de script care funcioneaz alturi de un server Web. PHP este un limbaj destinat scrierii scripturilor care vor fi interpretate de server-ul Web. Limbajul face parte din categoria open source Linu!'. Limbajului PHP combinat cu serverul de baza de date ()*+L reprezint o soluie foarte bun pentru realizarea rapida de aplicaii Web comple!e. ,eoarece PHP a fost conceput ca limbaj de scripting pentru Web faciliteaz accesul la variabile transmise de ctre formularele H-(L. .ste de notat diferena cu alte limbaje script /01 scrise #n limbaje precum Perl sau /2 #n loc de a scrie un program cu o multitudine de linii de comanda afi"ate #n final #ntr-o pagin H-(L vei scrie o pagin H-(L cu codul inclus pentru a realiza o aciune precis $#n cazul nostru se va afi"a un te!t'. /odul PHP este inclus ntre tag-urile speciale de nceput i de sfrit care permit utilizatorului s treac din 3modul H-(L3 #n 3modul PHP3. 4a de alte limbaje script precum 5avascript la PHP codul se e!ecut pe server. ,ac pe serverul Web se afl un script similar clientul nu va primi dec6t rezultatul e!ecuiei scriptului fr a avea nici o posibilitate de acces la codul care a produs rezultatul. 7 putei configura serverul de Web s prelucreze $analizeze' toate fi"ierele H-(L ca fi"iere PHP. 8stfel nu e!ist nici un mijloc de a distinge paginile care sunt produse dinamic de paginile statice. (area calitate "i cel mai mare avantaj al limbajului PHP este suportul cu un numr mare de baze de date. 8 realiza o pagin %eb dinamic cu o baza de date este e!trem de simplu. ,intre cele #n jur de 9: de tipuri de baze de date care sunt suportate de ctre PHP cele mai importante sunt2 MySQL, Oracle, dBase si Unix dbm Limbajul PHP are de asemenea suport pentru diverse servicii server utiliz6nd protocoale precum !M"#, S$M#, $$%#, #O#& "i '%%#. gratuite si este remarcabil prin fle!ibilitate u"urina in #nvare si capacitatea de a rula pe multiple sisteme de operare $Windo%s &ni!

Instalarea PHP
,up cum am spus mai sus limbajul PHP poate fi folosit pe foarte multe sisteme de operare2 toate sistemele Windo%s &ni! si Linu!.

;e vom opri asupra sistemelor de operare Windo%s. .ste de preferat folosirea pac<etului PHP-riad $care are mai multe variante eu folosind 9.9.=' deoarece conine serverul 8pac<e limbajul PHP > si serverul de baze de date ()*?L. 1nstalarea acestui pac<et se face la fel ca orice program pentru Windo%s "i creeaz pe /2 un director Apache care conine cele trei pri din pac<et. 1mplicit documentele PHP se vor afla in directorul htdocs iar bazele de date #n directorul data din directorul mysql. Pentru a putea lansa documentele %eb care folosesc limbajul PHP trebuie s lansm mai #nt6i serverul 8pac<e din meniul Programs al Windo%s. ,e asemenea pentru a folosi ()*?L trebuie pornit #n mod asemntor serverul ()*?L. ,ocumentele aflate #n directorul htdocs se vor accesa #n bara de adresa a oricrui bro%ser $1nternet .!plorer ;etscape sau altele' cu adresa2 H--P2@@local<ost@... . An acest fel se precizeaz bro%serului s se adreseze serverului 8pac<e.

Elementele de baz ale limbajului


.!ist patru moduri pentru a trece de la H(-L la PHP2
() )* ()p+p )* (script language,-p+p-* (.script* (/ /* - n stil "S#

/el mai folosit mod este primul pentru c este mai simplu dar "i al doilea pentru c asigura compatibilitatea cu limbajul BH-(L. 1nstruciunile sunt separate ca #n / sau ca #n Perl prin punct "i virgul la sf6r"itul unei instruciuni. *emnele de sf6r"it C?>C implic sf6r"itul instruciunii deci implicit punct "i virgul. .!emplu2
DE print -.*-F EG

/omentariile pot fi fcute #n stilul celor din limbajele / sau /HH adic cu @@... sau @I...I@

ipurile de date din PHP


J

-ipurile de date folosite de PHP sunt2 #ntregi reale "iruri de caractere tablouri dar permite "i definirea "i folosirea obiectelor. *pre deosebire de / /HH sau Pascal #n PHP variabilele nu trebuie declarate si precizat tipul lor. -ipul va fi determinat la prima atribuire. -oate variabilele au numele precedat de caracterul K. 7alorile #ntregi se pot scrie #n baza =: baza L $precedat de :' sau #n baza =M $precedat de :!'. .!emple2
0a,1223 0b,4&563 0c,4x&"713

;umerele reale se pot scrie #n forma normal sau #n forma e!ponenial2 .!emple2 =9.J>N sau =.>NMe9. Oirurile de caractere pot fi delimitate de g<ilimele sau apostrofuri #n ultimul caz in<ib6nduse evaluarea variabilelor din interiorul "irului. ,ac "irul de caractere este delimitat de g<ilimele atunci variabilele din interiorul "irului vor fi evaluate "i #nlocuite prin valoarea lor. /a "i #n / sau Perl caracterul bac8slas+ $!' este utilizat pentru a proteja un caracter special. .!emplu2 "ec#en$e escape Pn Pr Pt PP PK P3 %al&are Linie nou $linefeed L4 sau :!:8 in 8*/11' Antoarcere la linie $carrige return /Q sau +!+, in 8*/11' -ab orizontal $H- sau :!:R in 8*/11' SacTslas< *emnul dolarului 0<ilimele

8 doua metod #ncadreaz "irurile #ntre apostrofuriF #n acest caz singurele secvene escape #nelese sunt C!!C "i C!C. 7ariabilele nu vor fi e!pandate #ntr-un "ir #ncadrat #ntre apostrofuri. + alt metod de a delimita "irurile este folosirea sinta!ei d9c C'''C. ,up acest delimitator trebuie specificat un identificator apoi "irul de caractere propriu-zis "i #n #nc<eiere acela"i identificator care a precedat "irul.

>

Oirurile de caractere au o mare importan deoarece prin intermediul lor se transmit comenzi serverelor de date de e!emplu comenzile *?L care se transmit serverului ()*?L. An PHP tablourile se comport "i ca tablouri asociative $+as+ tables' "i ca tablouri inde!ate $:ect9ri'. PHP accept at6t tablouri scalare c6t "i asociative. ,e fapt nu e!ist nici o diferen #ntre cele dou. An PHP tablourile se pot crea utiliz6nd funciile list() "i arra*() sau se poate seta e!plicit fiecare element din tablou. .!emplu2
0a;4<,2&3 0a;1<,43 0b;&<,=adssd=3 0s;>a=<,&3

*e poate de asemenea crea un tablou adug6ndu-i valori. ,e e!emplu putem e!tinde tabloul 0a ca #n e!emplul de mai jos
0a;< , -"na-3 0a;< , -Maria-3

7ectorii pot fi sortai utiliz6nd funcii specializate2 as&rt() ars&rt() +s&rt() rs&rt() s&rt() uas&rt() us&rt() "i u+s&rt(). Putem numra elementele tabloului utiliz6nd funcia c&unt(). Putem parcurge un tablou utiliz6nd funciile ne,t() pre#() "i eac-(). ,up cum am mai spus PHP nu accept definirea e!plicit a tipului #n definirea variabilelor tipul unei variabile fiind determinat de conte!tul #n care acea variabil este utilizat. 8cesta #nseamn c dac atribuii variabilei :ar un "ir de caractere :ar va deveni "ir. ,ac #i atribuii o valoare #ntreag :ar va deveni un #ntreg. &n e!emplu de conversie automat a tipului apare la utilizarea operatorului C.C. ,ac vre-un operand este double atunci toi operanzii sunt evaluai la double "i rezultatul va fi un double. 8ltfel operanzii vor fi interpretai ca #ntregi "i rezultatul va fi tot un #ntreg. Qeinei c acest mod de evaluare nu modific tipul operanzilor care intervin #n e!presie ci numai modul #n care ei sunt evaluai asemntor cu conversia implicit din / sau /HH.

%ariabile PHP
7ariabilele #n PHP sunt reprezentate de semnul dolar C/C #n faa numelui variabilei. ;umele variabilelor sunt formate dup acelea"i reguli ca alte etic<ete din PHP. &n nume de variabil valid trebuie s #nceap printr-o liter sau liniu de subliniere C 0C urmat de un "ir de litere cifre sau liniue de subliniere.

An PHP J variabilele sunt asignate #ntotdeauna prin valoare. 8stfel c6nd atribuim unei variabile o e!presie #ntreaga valoare a e!presiei este copiat #n variabila destinaie. 8ceasta #nseamn de e!emplu c atribuind unei variabile valoarea altei variabile modificarea unei variabile nu va avea efect asupra celeilalte. PHP > ofer "i un alt mod pentru atribuirea de valori variabilelor2 prin referin?@. 8ceasta #nseamn c noua variabil nu face dec6t s refere variabila original $cu alte cuvinte 3devine un alias pentru3 sau 3pointeaz la3 variabila original'. An acest caz cele dou variabile sunt interdependente modificarea uneia determin6nd modificarea celeilalte. ,eoarece nu are loc copierea "i actualizarea valorilor asignarea prin referin este mai rapid. ,iferena devine notabil #n cazul e!ecuiilor repetate sau la asignarea tablourilor mari respectiv a obiectelor. Pentru a atribui prin referin se introduce un caracter C 1C #n faa variabilei care este atribuit $variabila surs'. .!emplu2
0a,A"naA3 0b,B0a3 0t , -$umele meu este 0b-3 #rint 0t3 .. afiseaCa $umele meu este "na

2bser#a$ie2 ;umai variabilele pot fi asignate prin referin $nu "i valorile constante'. 2bser#a$ie2 8tunci c6nd folosim instruciune include variabilele declarate anterior pot fi folosite #n fi"ierul inclus deoarece aceast instruciune se comport ca o copiere #n te!tul final al documentului %eb.

C&nstante PHP
/onstante predefinite2 PHPU7.Q*1+; - &n "ir de caractere reprezent6nd versiunea PHP utilizatF PHPU+* - ;umele sistemului de operare #n care ruleaz PHPF -Q&. - + valoare adevratF 48L*. - + valoare falsF .U.QQ+Q - 1ndic o eroare alta dec6t o eroare de analizare pentru care corectarea nu este posibilF .UW8Q;1;0 - 1ndic o situaie #n care PHP "tie c ceva este gre"it dar continu oricumF .UP8Q*. - *emnaleaz o sinta! invalid #n fi"ierul scriptF corectarea nu este posibilF ,e asemenea putem defini constante folosind funcia define()2 .!emplu2 define$ 3nume3 38namaria.3'F M

Print numeF

E,presii 3i &peranzi
.!presiile sunt cele mai importante construcii ale PHPF #n PHP aproape orice scriei este o e!presie. .!presia este o construcie algoritmic ce are un rezultat. PHP este un limbaj orientat pe e!presii #n sensul c aproape orice este o e!presie. +peratorii de pre "i postincrementare funcioneaz analog cu cei din /. &n tip uzual de e!presii #l reprezint e!presiile de comparare. 8ceste e!presii sunt evaluate la : sau = reprezent6nd 4AL"E respectiv 5UE6 PHP accept operatorii de comparaie > >7 77 87 $diferit' ' '7. 8ceste e!presii sunt utilizate uzual #n construirea condiiilor. /a "i #n / se pot folosi operatorii de atribuire compu"i. An afar de faptul c utilizarea acestor operatori compu"i duce la scurtarea codului "i e!ecuia este mai rapid. ,e asemeni PHP accept operatorul ternar condiional C ?C cu aceea"i semnificaie ca "i #n /. Limbajul PHP nu dispune de un tip logic predefinit. .valuarea valorii de adevr a e!presiilor PHP se face la fel ca #n / "i Perl2 orice valoare numeric nenul este 4AL"E. &n "ir vid este 4AL"E orice alt "ir este .!emple2
0c , 0aDD3 0f , d9ubleE 0dDDF3 0b , 0a , 63

5UE zero este

5UE. An cazul tablourilor "i obiectelor orice

valoare care nu conine elemente este considerat 4AL"E altfel este considerat 5UE.

+peratorii PHP sunt de urmtoarele tipuri2 aritmetici de atribuire pe bii de comparaie de incrementare@decrementare logici "i operatori pe "iruri de caractere. -oi operatorii din PHP sunt #mprumutai din / "i /HH "i se comporta la fel ca #n aceste limbaje av6nd aceea"i prioritate. .!cepie fac operatorii pe "iruri de caractere. .!ist doi operatori pentru "iruri de caractere. Primul este operatorul de concatenare $C 6C' care are ca rezultat concatenarea celor dou argumente. /el de-al doilea operator este operatorul de atribuire $C67C' care concateneaz argumentul din partea dreapt la argumentul din st6ng.

"tructuri de c&ntr&l
Principalele structuri de control din PHP sunt "i ele preluate din / "i /HH unele av6nd "i alte variante "i modificri. 8cestea sunt2 if, while, do-while, for, foreach, break, continue si switch.

1nstruciunea if permite e!ecuia condiionat a unei pri de cod. *inta!a instruciunii if este aceea"i ca "i #n /2
ifEexpresieF G instructiuni H

,aca e!presia $condiie' are valoare adevrat se e!ecuta instruciunile altfel nu se face nimic. + a doua forma este cea cu else la fel ca in /2
ifEexpresieF G instructiuni H else G instructiuni H

caz #n care daca e!presia nu este adevrat se vor e!ecuta instruciunile de dup else. ,ac avem o singur instruciune de e!ecutat atunci nu mai sunt necesare parantezele acolade. 1nstruciunile while , do-while si for permit e!ecutarea repetat unui grup de instruciuni astfel2 while e!ecuta c6t timp e!presia e adevrat dar condiioneaz anterior do-while la fel dar condiioneaz posterior iar for permite e!ecuia repetat bazat pe incrementare@decrementare. .le au urmtoarele forme2
I+ileE expresieF G instructiuni H d9 G H I+ile$e!presie'F

"i respectiv
f9rE expr13 expr23 expr&F G instructiuni H

Prima e!presie $expr1' este evaluat $executat@' o singur dat necondiionat la #nceputul buclei. La #nceputul fiecrei iteraii e!presia expr2 este evaluat. ,ac evaluarea devine -Q&. bucla continu "i instruciunile din lista de instruc?iuni sunt e!ecutate. ,ac evaluarea devine 48L*. e!ecuia buclei se opre"te. La sf6r"itul fiecrei iteraii e!presia expr& este evaluat $e!ecutat'. .!presiile pot fi eventual vide. ,ac e!presia expr2 este vid #nseamn c bucla este infinit $PHP consider implicit c e!presia expr2 este -Q&. ca #n /'. 8cest lucru poate fi util mai ales c6nd dorim s terminm bucla cu instruciunea break. PHP> $nu "i PHPJ' dispune de comanda foreach ca Perl sau alte limbaje. 1nstruciunea ofer un mod simplu de a trece #n revist un tablou. .!ist dou sinta!e posibile a doua este o mic dar util e!tensie a celei dint6i 2
f9reac+E arrayJexpresi9n as 0:alueF G instructiuni H

sau
f9reac+E arrayJexpresi9n as 08ey ,* 0:alueF G instructiuni H

Prima form trece #n revist tabloul arrayJexpressi9n. La fiecare iteraie valoarea elementului curent este atribuit lui 0:alue "i pointerul intern al tabloului este avansat cu un element $astfel la urmtoarea iteraie avei acces la urmtorul element'. 8 doua form face acela"i lucru dar c<eia $indicele' elementului curent va fi atribuit variabilei 08ey la fiecare iteraie. 2bser#a$ie2 c6nd 9&reac- #ncepe s fie e!ecutat pointerul intern al fi"ierului este automat repoziionat la primul element al tabloului. 8cest lucru #nseamn c nu vei avea nevoie s facei apel la reset() #nainte de 9&reac-. ,e asemeni 9&reac- lucreaz cu o copie a tabloului astfel #nc6t pointer-ul intern al tabloului nu este modificat ca #n cazul utilizrii constructorului eac-. 1nstruciunea break permite ie"irea dintr-o instruciune if, for, while sau switch. 1nstruciunea break accept un argument numeric opional care va indica numrul de instruciuni imbricate care trebuiesc #ntrerupte. 1nstruciunea continue este utilizat #ntr-o bucl pentru a sri peste instruciunile de dup continue "i p6n la sf6r"itul bloculuiF e!ecuia iteraiei curente este #ntrerup "i se trece la e!ecuia iteraiei urmtoare. 1nstruciunea continue accept un argument numeric opional care va indica c6te bucle imbricate vor fi ignorate. R

1nstruciunea switch este ec<ivalent cu o serie de instruciuni if. /u numeroase ocazii vei avea nevoie s comparai aceea"i variabil $sau e!presie' cu mai multe valori diferite "i s e!ecutai diferite pari din cod #n funcie de valoarea obinut. 8cesta este modul de e!ecuie al instruciunii switch. .ste important s #nelegem modul de e!ecuie al instruciunii switch pentru a evita apariia erorilor. 1nstruciunea switch se e!ecut secvenial linie dup linie. La #nceput nu este e!ecutat nici un cod. ;umai c6nd se gse"te o valoare a selectorului identic cu o constant case PHP e!ecut instruciunile corespunztoare respectivei constante case. PHP continu s e!ecute instruciunile p6n la sf6r"itul blocului de instruciuni switch sau p6n c6nd #nt6lne"te instruciunea break. ,ac nu utilizai instruciunea break la sf6r"itul unui bloc case PHP va continua s e!ecute instruciunile din urmtorul bloc case. .!emplu2
sIitc+E 0iF G case 4K print -0i este egal cu 4-3 case 1K print -0i este egal cu 1-3 case 2K print -0i este egal cu 2-3 H

An comanda switch condiia este evaluat o singur dat "i rezultatul este comparat cu fiecare constant case. Antr-o instruciune elseif condiia este reevaluat. ,ac condiia voastr este mai complicat dec6t o simpl comparaie sau apare #ntr-o bucl instruciunea switch se poate dovedi mai rapid. &n caz special #l constituie e!presia predefinit default. 8ceast e!presie indic orice e!presie diferit de constantele case anterioare .!emplu2
sIitc+E 0iF G case 4K print -0i este egal cu 4-3 brea83 case 1K print -0i este egal cu 1-3 brea83 case 2K

=:

print -0i este egal cu 2-3 brea83 defaultK print -0i nu este egal cu 4, 1 sau 2-3 H

PHP propune o sinta!a alternativ pentru instruciunile de control if, while, for "i switch. An fiecare caz principiul este de a #nlocui acolada desc<is cu dou puncte $C :C' "i acolada #nc<is prin respectiv endif;, endwhile;, endfor;, sau endswitch;. 4unc$ii Limbajul PHP dispune de un numr impresionant de funcii predefinite grupate pe mai multe categorii2 funcii matematice funcii de lucru cu "iruri de caractere funcii de lucru cu fi"iere funcii sistem etc. 4uncia include() introduce "i evalueaz fi"ierul specificat #n argument. ,ac ULL f9pen Irappers nu sunt disponibile #n PHP $a"a cum sunt #n configuraia implicit' putei specifica fi"ierul care trebuie inclus utiliz6nd un ULL #n locul unui pat+name local. Pentru a evita utilizarea eronat a fi"ierului inclus orice cod din fi"ierul destinaie care trebuie e!ecutat ca un cod PHP trebuie #ncadrat de tag-uri de #nceput "i sf6r"it valide #n PHP. 2bser#a$ie: 4unc$ia include() este reevaluat de fiecare dat c6nd este #nt6lnit #ntr-un cod PHP. ,eoarece include() este o construcie special a limbajului trebuie s o includei #ntr-un bloc de instruciuni dac ea apare #ntr-un bloc condiional. 8ceast funcie este foarte util pentru reutilizarea codului "i pentru structurarea paginilor %eb. ,e asemenea este folosit pentru a scrie funcii PHP #n afara paginilor. An PHP> c6t "i #n PHPJ se poate e!ecuta o instruciune return #n interiorul unui fi"ier inclus cu include() e!ecuia determin6nd #nc<eierea procesului #n respectivul fi"ier "i revenirea #n scriptul care l-a solicitat. ,e asemeni PHP> permite s returnai valori din fi"ierele incluse cu include() Putei folosi aceste valori ca "i cum ar fi returnate de o funcie normal. + mare importan o au funciile definire de programator. 8semenea majoritii limbajelor de programare moderne "i PHP permite definirea "i folosirea acestor funcii. + funcie poate fi definit de utilizator conform sinta!ei urmtoare2
functi9n numeJfunctieE 0p1, 0p2, G MMMMMM return 0rey3 H , 0p$F

==

Antr-o funcie poate s apar orice cod PHP valid c<iar alte funcii "i definiii de clase. 1nformaiile pot fi transmise funciilor printr-o list de parametri. An aceast list variabilele "i@sau constantele sunt delimitate prin virgul. PHP accept transmiterea parametrilor prin valoare $implicit' prin referin "i argumente cu valori implicite. Listele cu numr variabil de parametri sunt acceptate doar #n versiunea PHP>. &n efect similar poate fi obinut #n PHPJ transmi6nd funciei un tablou de argumente. 1mplicit argumentele funciilor sunt transmise prin valoare $#n sensul c sc<imbarea valorii argumentului #n interiorul funciei nu se reflect "i #n afara funciei'. ,ac dorii s permitei unei funcii s modifice argumentele sale acestea trebuie transmise prin referin. ,ac vrei ca un argument al unei funcii s fie transmis prin referin trebuie s precedai cu un C 1C numele argumentului #n definiia funciei e!act ca in / sau /HH. 7alorile sunt returnate folosind opional instruciunea return. Poate fi returnat orice tip de rezultat inclusiv tablouri "i obiecte. .!emplu2
functi9n patratE 0nF G return 0n N 0n3 H print patratE5F3 .. :a afia 1O

;u putei returna valori multiple dintr-o funcie dar rezultate asemntoare pot fi obinute prin returnarea unui tablou.

PHP; M*"<L 3i 9&rmularele


Lucrul cu formulare pe 1nternet este o practic foarte comun. Limbajul PHP permite foarte simplu prelucrarea datelor venite dintr-un formular. .!emplu2
(+tml* (+ead*(title* f9rmular simplu(.title*(.+ead* (b9dy* (POLM MQ%'O7,=#OS%= "R%!O$,=#'#"R% #'#=* (br*tastati dateK (br*(!$#U% %S#Q,=%QT%= $"MQ,=date=* (br*(br*(!$#U% %S#Q,=SUBM!%=* (.POLM* (.b9dy*

=9

(.+tml*

Accesarea variabilelor primite de la browser +data ce datele dintr-un formular au fost e!pediate scriptul asociat prime"te un "ir de caractere care conin perec<i de valori nume,:al9are *eparate prin caractere W. 1ntr-un script PHP numele diferitelor campuri Knume devin automat :ariabile gl9bale in cadrul scriptului si au :al9rile din cmpurile f9rmularului 8ceasta este valabil indiferent de modul de trimitere $p9st sau getF. 7alorile primite de la bro%ser pot fi accesate si prin "irurile asociative KH--PUP+*-U78Q* sau KH--PU0.-U78Q* in funcie de modul de e!pediere a datelor. 8ccesul la o valoare se face scriind KH--PUP+*-U78Q*Xc<eieY c<eie fiind numele c6mpului formularului. (ulte dintre aceste formulare se refer la pstrarea anumitor date. 8ici intervine ()*?L "i PHP permite transmiterea de comenzi ctre serverul de date ()*?L. 8"adar PHP este suficient pentru prelucrarea formularelor "i a bazelor de date #ntr-un mod simplu "i eficient.

=J

=>

S-ar putea să vă placă și