PHP

Wikibookstik

Sarrera[aldatu]

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[aldatu]

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[aldatu]

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:

    <?php
    echo “Ongietorri PHPren mundura”;
    ?>

Zerbitzariak behar bezala prozesatu ondoren, nabigatzaileak honakoa jasoko du soilik:

    Ongietorri PHPren mundura''

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:

    <?php
    $NERE_ALDAGAIA = "1234";
    $nere_aldagaia = "4321";
	
    echo $NERE_ALDAGAIA. "<br>";
    echo $nere_aldagaia. "<br>";
    ?>

Honakoa itzuliko du:

    1234
    4321

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:

	<php
	$BAT1 = 12;
	$BAT2 = 4;
	$EMA = $BAT1 + $BAT2;

	echo $BAT1 . "-en eta " . $BAT2 . "-ren batura " . $EMA . " da";
	//Programa honek 12 + 4 kalkulatzen du
	?>

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:

12-ren eta 4-en batura 16 da

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:

	//Hau lerro bateko komentarioa da
	//Hau ere bai

	/*Hau 
	kerro ugariko
	komentarioa da*/

Aldagaiak PHPn[aldatu]

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:

	<?php
	$katea = “Kaixo mundua”;
	$osoa = 100;
	$hamartarra = 8.5;
	?>

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.

	<?
	global $aldagai;	//Aldagai globala da
	$zenbaki = 1;	//Hau ere bai, nahiz eta ez deklaratu global bezala

	Function bidertu()
	{
		$biderketa = ($zenbaki * 50); 
                //biderketa aldagaia bidertu funtzioan existitzen da soilik
                echo $biderketa;
	}
	?>

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.

	<?php
	$abere = array();
        //array()-rekin aldagaia bektorea dela adierazten da
	$abere[0] = “Katua”; 
	$abere[1] = “Zakurra”; 
	$abere[2] = “Oiloa”; 
	?>

$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[aldatu]

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

"+" Batuketa 5 + 4 = 9
"-" Kenketa 5 – 4 = 1
"*" Biderketa 3 * 3 = 9
"/" Zatiketa 10 / 2 = 5
"%" Ondarra 10 % 3 = 1
"++" Bat gehitu $ald++
"--" Bat kendu $ald—-
"==" “true” itzultzen du baldintza betetzen bada 2 == 2 (Egia)
"!== “true” itzultzen du baldintza ez bada betetzen 2 != 2 (Gezurra)
"<" true itzultzen du zenbaki bat bestea baino txikiago bada 2 < 5 (Egia)
">" true itzultzen du zenbaki bat bestea baino handiago bada 6 > 4 (Egia)
"<=" true itzultzen du zenbaki bat bestea baino txikiago edo berdin bada 
">=" true itzultzen du zenbaki bat bestea baino handiago edo berdin bada 

Kontrol egiturak[aldatu]

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[aldatu]

Baldintzak, sententzia baten “egitasunaren” arabera, akzio jakin batzu egiten uzten duten egiturak dira. Erabilienak, beste hizkuntzetan bezala, if … else eta switch dira.

	<?php
	$a = 5;
	$b = 2;

	if($a == $b)
	{
		echo “2 eta 5 berdinak ?! Arraroa benetan”;
	}
        else
        {
	        echo “2 eta 5 logikoki ezberdinak 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:

	<?php
	if (sententzia)
        {
	        egia balitz exekutatu beharrekoa
        }
        else
        {
	        Gezurra balitz exekutatu beharrekoa
        }
        ?>

Switch berriz if…else-ren luzapen bat bezalakoa da, bi bide baino gehiagoren posibilitatea ahalbidetzen duena.

	<?php
	$a = 1;

	switch ($a)
	{
		case 0:
			echo “a berdin 0”;
			break;
		case 1:
			echo “a berdin 1”;
			break;
		case 2:
			echo “a berdin 2”;
	}
	?>

Bukleak[aldatu]

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:

	<?php
	$a = 3;
	while($a < 7)
	{
		echo “a-ren balioa “ .$a . “ da momentu honetan <br>”;
		$a++;
	}
        ?>

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:

	<?php
	for ($a = 3; $a < 7; $a++)
	{
		echo “a-ren balioa “ .$a . “ da momentu honetan <br>”;
	}
	?>

Parentesi artean aldagaiaren hasierako balioa, bete beharreko baldintza eta “bira” bakoitzean aldagaiak nozitutako aldaketa jartzen zaizkio.

Funtzioak[aldatu]

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:

	<?php
	function BaturaErrekurtsiboa($a, $b)
        {
	        $batura = $a + $b;
	        return $batura;
        }

        function Bigeibi()
        {
	        $batura = BaturaErrekurtsiboa(2,2);
	        echo $batura;
        }
        ?>

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.