# PHP
## Sarrera

PHP script (“gidoi”) lenguaia bat da, besteak beste, web orrien dinamismoa handitzeko diseinatua. Hasieran, web orrien mantenuan laguntzeko sortutako makro talde bat besterik ez zen, baina ordutik bere ezaugarriak hazten joan dira, datu base handiek osatzen duten lan-inguruak maneiatzeko gai den programazio lenguaia erabilgarri bat izateraino. Bere arrakasta, besteak beste, C programazio lenguaiaren sintaxiarekin duen parekotasunagatik, bere abiaduragatik eta bere sinplizitateagatik datorkio.
Web zerbitzarietan erabiltzen den script lenguaia bat da eta bertan exekutatzen da. Honegatik, PHP kodigoa duen orri bat zerbitzarian interpretatuko da bezeroari (kasu honetan, edozein nabigatzailerekin web orri bat ikustea eskatu duen erabiltzaile bat) bidali aurretik. Bezeroak jasotzen duen orrian ez du PHP kodigorik ikusgai, hau erabat interpretatua eta ordezkatua izan da eta web osoan ojiko HTML bakarrik ikus daiteke.
PHP kodigoa duten orrian erabiltzaileak ikusi aurretik aldatzen da, baldintza batzuen arabera. Horrela, orriaren ezaugarriak (kolorea, tabla kopurua eta egitura, etab…)aldatu ditzazkegu erabiltzaile jakin batzuen arabera edota MySQL bezalako datu base bat integratu orrian bertan. Laburbilduz, PHPk orri estatiko bat dinamiko bihurtzen du.
PHP Open Source teknologia bat da. Hau da, dohainekoa eta askea da, iturri-kodea ikusi eta alda daiteke, betiere PHP lizentzia betetzen bada.
PHP bi bertsio paralelotan hari da garatzen. 4 bertsioaren azken argitalpena 4.4.8 da eta 5 bertsioarena 5.2.6.

## PHP lortu

PHPren aplikazio nagusia zerbitzarien script lenguaia gisa da (web orrien sorreraren ingurukoa), baina edozein programazio lenguaia bezala erabil daiteke helburu anitzetarako.
PHP erabili nahi bada web orrietan, orri hauek jartzeko zerbitzari baten jabe izatea (edota sarbidea edukitzea) beharrezkoa da. Honetarako ez da beharrezkoa Interneten erregistraturiko web orri bat edukitzea, norberaren ordenagailuan zerbitzari bat instalatzea posible bait da, fitxategia lokalki edota sare bidez zerbitzatuz.
Hau egiteko era bat Apache Web Serveren bidez da, gaur egun erabiltzen den web zerbitzari softwarerik erabiliena. Software hau nola lortu, instalatu eta konfiguratzeko, ikus Apache Web Server eta PHP gida.

## Oinarrizkoa PHPn

PHP web orri bat osatzen duen HTML programan txertatutako kodigoa besterik ez da, zerbitzarian exekutatzen dena, nabigatzaileak (bezeroak) prozesatutako programaren emaitza jasoz. Ondorengo adibidearekin azalduko da hori:
HTMLz egindako web orri batean ondorengo scripta txertatuko dugu:
Zerbitzariak behar bezala prozesatu ondoren, nabigatzaileak honakoa jasoko du soilik:
PHP kodigoa interpretatua izan da eta zerbitzariak HTML garbi gisa itzuli du. Irudimena erabiliz gero, ikus daitezke honek ze nolako hobekuntzak ekar diezaiozken ohizko web orriei: aurkezpenak personalizatu, datu baseetako informazioa ikusi eta manipulatu…
Oraingoz, lenguaiaren sintaxiarekin jarraituko dugu, ondorengo scripta aztertuz:
Honakoa itzuliko du:
Scriptean nabarmentzen den lehen gauza, PHP kodigoa <?php-rekin hasi eta ?>-rekin amaizen dela da. Bi etiketa hauekin, HTML kodigoko puntu ugaritan txerta daiteke PHP aginduak. Ikusten den beste ezaugarri bat, aldagai guztiak "$" sinboloarekin asten direla da eta maiuskulak eta minuskulak ezberdintzen direla. Aldagaiak eta etiketak puntu “.” baten bidez lotuta daude, horrela nabigatzaileak lineako jauzi bat egingo du aldagaia idatzi ondoren. Azkenik, ikusi komando lerro bakoitza puntu eta koma “;” batekin amaitzen direla.
Ikusi adibide komplexuago hau:
Programa txiki hau ez dago sakon azaldu beharrik: lehen eta bigarren aldagaiak definitzen ditu, bi aldagaien batura egin eta hirugarrenari atxikitzen dio eta azkenik hiru aldagaiak idazten ditu, textu apur bat txertatuz. Honakoa jasoko dugu:
Textuaren eta aldagaien nahasketa lortzeko konkatenatu egin dira puntu “.” Baten bidez. Ikusi komentario bat txertatu dela scriptean, “//”-ren ondoren dagoen textua. Ez du programan ezertarako eragiten, baina bere erabilera Gomendagarria izaten da programa luzeetan. Bi era daude komentarioak txertatzeko:

## Aldagaiak PHPn

PHPn ez da beharrezkoa aldagaiak deklaratzea, hau da, ez dago zertan programari aldagaia zenbaki bat edo kate bat den esan beharrik, PHP bere kabuz definitzen bait du.
Adibidez:
Ikus daitekenez, hiru aldagaiak balio batekin izan dira definituak eta ez tipoarekin.
Aldagai baten eremua scriptean duen lekua da. Eremu globalekoa denean, scripteko zati guztietan du bere lekua eta edozein tokitan erabil daiteke; baina lokala bada, funtzio jakin baten barnean soilik existitu eta funtzionatuko duela esan nahi du, ezin izango delarik script nagusitik edo beste funtzioetatik deitu.
Aldagai global bat deitzeko, global hitz gakoa erabil daiteke, nahiz eta edozein funtzioetatik kanpo deklaratzearekin nahikoa da.
Adibide honetan garbi ikusten da aldagai baten eremua noiz den globala eta noiz lokala. $zenbaki aldagaia edozein funtzioren barruan zein kanpoan erabil daiteke, bidertu funtzioan erabil daitekelarik. Bestalde, $biderketa aldagaia bidertu funtzioaren barruan erabil daiteke soilik, ez baita existitzen eremu horretatik kanpo.
Aldagaien gaiarekin amaitzeko array edo bektoreaki ikusiko ditugu. Elementu ugari aldi berean gorde ditzazkeen aldagai bereziak dira.
$abere arrayaren elementu bakoitza lortzeko, arrayaren izena eta kortxete hartean dagoen zenbaki bat idatzi beharko dira, arrayean elementu horrek duen posizioa adierazten duena. Horrela, $abere bektore bat den arren, $abere[0] arrayeko elementu bat da, “Katua” katea balio gisa duena.
Bektoreak oso erabilgarriak dira elementu bakoitzarentzat aldagai bat sortu beharrean, denentzat komun bat erabiltzeko. Horrela, gure adibidean ez genuke $Katua, $Akerra, $Behia bezalako aldagairik sortu beharko.

## Operatzaileak PHPn

Operatzaileak eragiketa matematiko zein logikoak (konparaziokoak) egiteko erabiltzen diren sinbolo bereziak dira. Ondoren, PHPko erabilienak:

## Kontrol egiturak

Kontrol egiturei esker, frogapenak egin eta kodigo bereziak exekuta ditzakegu, gure scriptak benetan baliagarri bilakatuz. Egituren artean baldintza eta bukle funtzioak aurki ditzakegu. Hauek tratatuko ditugu.

### Baldintzak

Baldintzak, sententzia baten “egitasunaren” arabera, akzio jakin batzu egiten uzten duten egiturak dira. Erabilienak, beste hizkuntzetan bezala, if … else eta switch dira.
If instrukzioak sententziaren “egiatasuna” baieztatzen du. Lehenago aipatu den bezala, “==” operatzaileak true itzultzen du $a eta $b berdinak badira. Hau gertatuko balitz, ondoren datorren textua idatziko luke. Sententzia ez bada betetzen ordea, else-ren ondoren datorren kodigoa exekutatuko litzateke.
Laburbilduz, if…else instrukzioa honela defini genezake:
Switch berriz if…else-ren luzapen bat bezalakoa da, bi bide baino gehiagoren posibilitatea ahalbidetzen duena.

### Bukleak

Bukle bat, baldintza jakin bat bete arte akzio bat etengabe exekutatzen duen instrukzio bat da. Bi bukle mota daude, for eta while.
While buklea da sinpleena:
While buklea parentesis hartean dagoen sententzia egia den bitartean, hau da, $a-ren balioa 7 baino txikiagoa den bitartean errepikatuko da. Buklearen “bira” bakoitzean, textu bat idatziko du eta $a-ren balioa unitate batean gehituko da ($a++). Horrela, hasierako balioa 3 izanik, buklea lau aldiz errepikatu ondoren, $a-ren balioa 7 izango da eta orduan buklea exekutatzez utziko dio.
Ekintza bera for batez bidez honela egingo litzateke:
Parentesi artean aldagaiaren hasierako balioa, bete beharreko baldintza eta “bira” bakoitzean aldagaiak nozitutako aldaketa jartzen zaizkio.

## Funtzioak

Amaitzeko, funtzioak nola erabiltzen diren aztertuko da, bai ohikoak baita errekurtsiboak ere, balio bat itzultzen dutenak.
PHPko funtzioek parametroak izan ditzakete edo ez, errekurtsiboak diren ala ez determinatzen dutenak. Parametroak bidaltzen bazaizkio eta hauek balio bat itzultzen uzten badute, funtzioa errekurtsiboa dela esaten da, bestela ohikoa izango litzateke. Nagusiki, funtzioak kodigo errepikakorrak scriptean behin eta berriz idaztea eragozteko erabiltzen da, honen ordez funtzioari deituz.
Funtzio bat function izen gakoarekin definitzen da eta bere instrukzioak gakoen artean idazten dira, kontrol egituretan bezala. Ikusi ondorengo adibidea:
BaturaErrekurtsiboa funtzioari bi parametro pasa behar zaizkio, berak bien batura kalkulatzen duelarik. Ondoren, baturaren balioa itzultzen du return hitz gakoarekin. Bigeibi funtzioak berriz, BaturaErrekurtsiboa funtzioari deitzen dio 2 eta 2 balioekin, eta idatzi egiten du, baliorik itzuli gabe.