Hyrje në PHP

## Arkitektura klient/server

Arkitektura klient/server është një model që vepron si aplikacion i shpëndarë (distributed application), i cili bën ndarjen e detyrave ndërmjet ofruesve të resurseve apo shërbimeve (serverët) dhe kërkuesve të atyre shërbimeve (klientët).

Klientët dhe serverët komunikojnë nëpërmjet rrjetit kompjuterik në pajisje të ndryshme harduerike.

Serveri është host në të cilin ekzekutohen një apo më tepër programe speciale, që kanë për detyrë t’i ndajnë resurset me klientët.

Klienti e inicon sesionin e komunikimit me serverin, i cili është në pritje të kërkesave nga klientët.

Web serverët

Dedikim parësor i Web serverëve është distribuimi i Web faqeve me kërkesën e klientëve, duke u bazuar në protokolin HTTP (Hypertext Transfer Protocol).

Kjo përfshin dërgimin e dokumenteve të tipeve të ndryshme, imazheve, audio/video fajllave, etj.

Shfletuesi (browser, user agent) e inicon komunikimin duke dërguar kërkesë për një resurs specifik duke përdorur HTTP. Në këtë serveri i përgjigjet duke ia dërguar përmbajtjen e kërkuar apo duke kthyer raportin e gabimit, nëse ai resurs nuk është gjetur.

Resursi i kthyer mund të jetë fajll real që ekziston në diskun e serverit, por edhe mund të jenë të dhëna të gjeneruara në mënyrë dinamike.

Përveç dërgimit të të dhënave, serveri është në gjendje edhe të pranojë të dhëna nga klientët.

Kjo rëndomë ka të bëjë me pranimin e përmbajtjes së ndonjë formulari, apo të fajllave të atashuar.

Shumë Web serverë, përkrahin gjuhët skriptuese siç janë PHP, ASP, Perl, Python, etj.

Këto më tepër përdoren për krijimin e HTML dokumenteve dinamike, që gjenerohen aty për aty (on-the-fly).

HTTP

HTTP funksionet janë protokole kërkesë-përgjigje (request-response) në modelin klient-server.

Klienti ia dërgon serverit kërkesën në formë të HTTP mesazhit kërkues (HTTP request message).

Serveri nga ana e vet, çdo përgjigjeje të kthyer ia shoqëron edhe raportin (response message) që i dërgohet klientit.

Ai raport përmban statusin mbi realizimin e kërkesës, dmth nëse është kompletuar apo jo dhe çka mund të jetë arsyeja e gabimit. Raporti se gjithçka ka vajtur në rregull:

1 HTTP/1.1 200 OK

1. Ç’është PHP?

PHP është shkurtesë nga Personal Home Page. I krijuar në vitin 1994 nga Rasmus Lerdorf, me qëllim të përcjelljes së vizitave në Web faqen që e përmbante rezymenë e tij. Kuptimi që i jepet sot është PHP: Hypertext Preprocessor.

Është gjuhë programore, e dedikuar në veçanti për zhvillimin e Web aplikacioneve. Duke qenë gjuhë për përpilimin e skriptave që ekzekutohen në server, programet e shkruara në PHP nuk kompajlohen, por interpretohen gjatë ekzekutimit. Efekti kryesor negativ i kësaj qasjeje është se aplikacionet, gjegjësisht skriptat, ekzekutohen më ngadalë se ato të kompajluara, siç janë aplikacionet e shkruara në gjuhët programore C apo C++. Në këtë aspekt, PHP është i krahasueshëm me JavaScript, me një dallim thelbësor se JavaScript ekzekutohet brenda shfletuesit, ndërsa PHP ekzekutohet ekskluzivisht në server.

Meqenëse shfletuesit i njohin vetëm kodet e përpiluara në HTML, CSS dhe JavaScript, edhe rezultati që gjenerohet nga një PHP skriptë duhet të jetë në njërën nga gjuhët e përmendura. Kodi i PHP mund të futet brenda kodit HTML, ku është në gjendje t’i shtojë faqes ekzistuese kodin HTML të gjeneruar në mënyrë programore.

Pra, përdorimi i PHP është shumë specifik: gjenerimi i HTML kodit që insertohet në një HTML faqe ekzistuese. Me PHP nuk mund të shkruhen aplikacione të pavarura që rezultojnë në një .exe aplikacion.

Kodi në PHP ekzekutohet në server, jo tek klienti (shfletuesi). Për dallim nga JavaScript, ekzekutimi i kodit në PHP nuk varet nga modeli apo versioni i shfletuesit të caktuar.

Skripta ruhet në server dhe shfletuesit i dërgohet vetëm rezultati i ekzekutimit të kodit, në formë të dokumentit të formatuar në HTML/CSS.

Për këtë shkak, skripta në PHP nuk mund të shihet në shfletues me “View Source”, gjë që është avantazh në aspektin e mbrojtjes së pronës intelektuale, por edhe në aspektin e sigurisë së aplikacionit.

Sipas Bacon J. (2007), PHP ofron një gjuhë programuese solide dhe mirë të definuar që përfshin përkrahjen për programim të orientuar në objekte (object-orientated programming - OOP), strukturat logjike, manipulimet me fajlla, aritmetikë, e shumëçka tjetër.

Gjuha PHP është e ngjashme semantikisht me atë të gjuhëve skriptuese kombinuar me lehtësitë që ofron gjuha C.

  • Me burim të hapur (open source)
  • Pa pagesë
  • I instaluar në miliona Web serverë
  • Platformë për edhe më tepër Web sajte
  • I ngjashëm me C për nga sintaksa
  • Mund të zgjerohet me biblioteka në gjuhët e tjera

Performanca

Skriptat e shkruara në PHP tregojnë peformanca më të mira se ato në gjuhët tjera, në radhë të parë për nga shpejtësia e ekzekutimit.

Versioni 5.0 i PHP është rishkruar nga zeroja, me çka është përmirësuar dukshëm në aspektin e shpejtësisë.

Janë në dispozicion akceleratorë të ndryshëm për t’ia rritur performancat e përgjithshme.

Portabiliteti

PHP-në e gjejmë në shumë sisteme operative: UNIX, Microsoft Windows, Mac OS, dhe OS/2.

PHP aplikacionet e shkruara në një platformë munden me aspak apo fare pak përshtatje të ekzekutohen në cilëndo pratformë tjetër.

Lehtësia e përdorimit

  • Kjo gjuhë programore është gjuhë tejet e sofistikuar.
  • Ka sintaksë të qartë dhe konzistente.
  • Përmban mbi 5000 funksione.
  • Dokumentacioni është i begatshëm dhe mbulon çdo aspekt të programimit.
  • Është i lehtë për mësim.
  • Mundëson zhvillim rapid të aplikacioneve.

Kodi i hapur

  • PHP ka kod të hapur, që dmth se programuesit mund ta modifikojnë kodin sipas nevojës.
  • Kodi i hapur jep mundësinë që zhvilluesit e aplikacioneve t’u gjejnë gabimet, t’ia raportojnë atë komunitetit, t’i korigjojnë, etj.
  • Mund të merret pa pagesë.
  • Nuk kërkon harduer të shtrenjtë.
  • Mundëson reduktimin e kostos së zhvillimit të aplikacioneve, duke mos e dëmtuar në asnjë aspekt.

Mbështetja e komunitetit

  • PHP është gjuhë programore që gëzon mbështetje të një komuniteti të gjerë të Web zhvilluesve nga e gjithë bota.
  • Si rezultat e punës me mbështjetje nga komuniteti, është:
  • PEAR (PHP Extension and Application Repository, http://pear.php.net/), dhe
  • PECL (the PHP Extension Community Library, http://pecl.php.net/).
  • Këto dy librari përmbajnë ekstensione të shumta që i shtojnë PHP-së funksione të reja, të cilat e lehtësojnë në masë të madhe procesin e programimit.

Ndërlidhja me aplikacionet tjera

PHP mund të lidhet me një numër të konsiderueshëm të sistemeve për menaxhimin e databazave relacionale, siç janë: MySQL, PostgreSQL, Oracle, dhe Microsoft SQL Server.

Versionet më të reja të PHP përkrahin mbi 15 sisteme të ndryshme të databazave, duke poseduar edhe një API të përbashkët për të gjitha.

Përveç databazave, PHP mund të lexojë dhe krijojë XML dokumente, t’i qaset strukturës së XML me XPath, si dhe të kryejë transformimet gjegjëse me XSLT.

Zgjerimi i gjuhës

  • PHP lejon që programuesit të zhvillojnë shtojca të ndryshme për këtë gjuhë, duke e zgjeruar funksionalitetin e tij.
  • Këto shtojca mundësojnë që sot të mund të kryhen:
  • Manipulime me imazhet (GIF, JPEG, and PNG),
  • Zhvillimi i komunikimit me postën elektronike,
  • Të zhvillohen Web servise të bazuara në protokolet REST dhe SOAP, etj.
  • PHP mund t’u qaset bibliotekave në C, klasave të Java dhe COM objekteve.

Funksionimi i Web faqes

Në momentin që një vizitor i sajtit, bën kërkesë për hapjen e një HTML dokumenti, Web serveri ia përcjell HTML dokumentin e ruajtur, paraprakisht duke e interpretuar bllokun e kodit në PHP dhe shndërruar rezultatin në pjesë integrale të faqes.

Mund të thuhet se kodi në PHP i jep gjallëri faqes, duke e ndryshuar përmbajtjen në mënyrë inteligjente duke iu përgjigjur zgjedhjeve që bën vizitori me anë të klikimit apo plotësimit të të dhënave.

Procesi i ekzekutimit

  • Vizitori e hap shfletuesin dhe e shënon adresën (URL) e faqes së dëshiruar.
  • Në bazë të adresës së shënuar, shfletuesi ia dërgon një kërkesë (HTTP request) Web serverit përkatës.
  • Web serveri, me të pranuar të kërkesës, e gjen në server fajllin përkatës në PHP.
  • Përmbajtja e fajllit të zgjedhur përcillet tek PHP interpreteri.
  • PHP intepreteri e analizon fajllin, duke ekzekutuar kodet e shkruara në PHP (kodi ndërmjet ).
  • Brenda këtyre dy etiketave mund të ketë kode:
  • Për të kryer analizën e të dhënave hyrëse,
  • Për komunikim me databazën,
  • Për kryerjen e llogaritjeve të ndryshme, etj.
  • Pasi të jetë kryer ekzekutimi i kodeve të shkruara në PHP, Web serveri e dërgon faqen e gjeneruar drejt shfletuesit të vizitorit, me çka përmbyllet procesi.

Inkorporimi i PHP kodit në HTML

Shembull i inkorporimit të PHP kodit brenda një HTML dokumenti:

 1 <html>
 2 <head>
 3 <title>Leksioni 1</title>
 4 </head>
 5 <body>
 6 <h1>Ky tekst është brenda HTML</h1>
 7 <?php 
 8 echo <p>Ky është dërguar nga PHP</p>; 
 9 ?>
10 </body>
11 <html>

Rreshtat 1, 2, 3, 4, 5, 6, 10, 11 janë të shkruara në HTML, ndërsa rreshtat 7, 8 dhe 9 janë në PHP. Kodi rezultues në HTML do të duket kështu:

1 <html>
2 <head>
3 <title>Leksioni 1</title>
4 </head>
5 <body>
6 <h1>Ky tekst është brenda HTML</h1>
7 <p>Ky është dërguar nga PHP</p>
8 </body>
9 <html>

Kod të këtillë do të shohim kur zgjedhim p.sh. opsionin “View Source” në shfletuesin Google Chrome.

Kodi PHP nuk shihet me “View Source”, sepse paraprakisht është transformuar në HTML në server, për t’u dërguar pastaj në shfletues.

Bazuar në shembullin e mësipërm, mund të nxjerren disa përfundime:

  1. HTML dokumentin që brenda vetes përmban PHP kod, duhet ta ruajmë me ekstensionin .php dhe jo .html, siç bëhet rëndomë. Në bazë të këtij ekstensioni, Web serveri vendos nëse ai dokument duhet të dërgohet i pandryshuar drejt shfletuesit (rasti me .html), apo duhet paraprakisht të dërgohet në PHP parser për t’u transformuar në HTML dokument.
  2. Kodi që shkruhet në PHP, fillon me etiketën . Thënë ndryshe, e vazhdon më tutje rrjedhën e atij HTML dokumenti. Si rezultat përfundimtar do ta kemi një HTML dokument, përmbajtja e të cilit është modifikuar në mënyrë dinamike. Mund të shprehemi edhe në mënyrë të thjeshtë: HTML + PHP = HTML.
  3. Konstrukti gjuhësor echo e kryen një detyrë të thjeshtë: gjithë tekstin që është brenda thonjëzave e dërgon në “ekran”, gjegjësisht ia bashkangjet atë HTML dokumentit dhe atë pikërisht në pozitën ku është shënuar PHP kodi. Meqenëse në shembullin tonë, PHP kodi është i shënuar pas </h1> dhe përfundon para </body>, edhe HTML kodi rezultues do të vendoset pikërisht brenda kësaj zone:
  4. Çdo rresht programor në PHP duhet të përfundojë me pikëpresje (;). Për dallim nga JavaScript, ku pikëpresja është opsionale, në PHP ajo është e domosdoshme dhe mungesa e pikëpresjes në ndonjë rresht mund të rezultojë në gabime të paparashikueshme gjatë ekzekutimit të skriptës.
  5. Dokumenti që përmban PHP kod nuk ekzekutohet si programet tjera aplikative duke klikuar në ikonën përkatëse në desktop apo Start menu, por ekzekutohet duke e shënuar URL-në e tij në shfletues. Në raste të caktuara, një PHP skriptë mund të startohet edhe nga rreshti komandues.
  6. Në rastin konkret, URL-ja është: http://localhost/leksioni1.php, ku http://localhost/ paraqet adresën e serverit lokal, ndërsa leksioni1.php është vetë emri i skriptës. Në rast se këtë skriptë e kopjojmë në Web server të kompanisë së hostingut, localhost zëvendësohet me domainin përkatës, p.sh.: http://faqjaime.com/leksioni1.php
  7. Rezultat i ekzekutimit të PHP skriptës konkrete do të jetë një HTML dokument, të cilit do t’i shtohen HTML kode shtesë, për ta formuar një tërësi që i dërgohet shfletuesit për ta paraqitur në ekran.

Skripta e mësipërme nuk kryen ndonjë gjë të veçantë, sepse shtimin e paragrafit me një fjali do të mund ta realizonim duke koduar drejtpërsëdrejti në HTML. Fuqia e vërtetë e PHP vie në shprehje atëherë kur nevojitet t’i shtohet faqes ndonjë informatë e karakterit variabil, gjegjësisht dinamik, siç janë p.sh. të dhënat meteorologjike, rezultatet sportive, kurset valutore, postimet nga forumet apo rrjetat sociale, produktet e porositura në një e-dyqan, etj. Në të tilla situata, përmbajtja e faqes nuk paraqitet e njëjtë tek të gjithë vizitorët e sajtit, por do të jetë e ndryshueshme varësisht nga dinamika e ndryshimeve të të dhënave si dhe nga zgjedhjet që i bën vetë vizitori.

Për t’i paraqitur të dhënat e tilla, PHP komunikon me Sistemin për Menaxhimin e Databazave Relacionale (RDBMS), ku më së shpeshti e gjejmë të përdorur sistemin MySQL. Kështu, PHP e siguron logjikën e aplikacionit, ndërsa MySQL i siguron të dhënat të cilat do të përpunohen për t’u paraqitur më pas si faqe HTML në ekranin e vizitorit nëpërmes shfletuesit. PHP interpreteri nuk vepron i pavarur, por mbështetet në serviset që i ofron një Web server. Pra, minimumi i nevojshëm për ta krijuar një ambient për zhvillimin e aplikacioneve dinamike konsiston në instalimin e Web serverit, PHP interpreterit dhe një sistemi për menaxhimin e databazave.

Me një ndryshim fare të vogël në kodin e mësipërm, do të jemi në gjendje të fitojmë një të dhënë dinamike siç është data aktuale, e cila do të ndryshojë vetë me kalimin në datë të re. Përderisa tek HTML faqet statike, për ndryshime të këtilla nevojitet modifikimi i datës brenda HTML dokumentit dhe publikimi i sërishëm i atij dokumenti në Web server, tek përdorimi i PHP kodit kjo detyrë eliminohet sepse sistemi e kryen vetë në mënyrë automatike.

 1 <html>
 2 <head>
 3 <meta charset="utf-8">
 4 <title>Leksioni 1b</title>
 5 </head>
 6 <body>
 7 <h1>Ky tekst është brenda HTML</h1>
 8 <p>
 9 <?php 
10 echo date("d.m.Y"); 
11 ?>
12 </p>
13 </body>
14 <html>