<<

University of Business and Technology in Kosovo UBT Knowledge Center

Theses and Dissertations Student Work

Summer 7-2020

Krahasimi i Framework-ave Framework dhe ne PHP

Gentrit Gruda

Follow this and additional works at: https://knowledgecenter.ubt-uni.net/etd

Part of the Computer Sciences Commons

Programi për Shkenca Kompjuterike dhe Inxhinierise

Krahasimi i Framework-ave Zend Framework dhe Laravel ne PHP Shkalla Bachelor

Gentrit Gruda

Korrik / 2020 Prishtinë

Programi për Shkenca Kompjuterike dhe Inxhinierise

Punim Diplome Viti akademik 2013 – 2014

Gentrit Gruda

Krahasimi i Framework-ave Zend Framework dhe Laravel ne PHP

Mentor: MSc. Betim Gashi

Korrik / 2020

Ky punim është përpiluar dhe dorëzuar në përmbushjen e kërkesave të pjesshme për Shkallën Bachelor ABSTRAKT

Zhvillimi i Teknologjive i cili sa vjen e rritet, bien më vetë një nevojë e cila është që çdo gjë që zhvillohën, të zhvillohën më shpejtë, më stabil dhe më pak probleme. Pikërisht këtë problem disa individë më idetë e tyre mundohën ta largojnë duke zhvilluar framework-a të cilat na ndihmojnë të zhvillojmë webfaqe apo aplikacion sa më shpejtë që të jetë e mundur, por duke mos anashkaluar cilësinë dhe saktësinë në vetë. Kur zhvillohën kësi framework-a, zhvillohën që të lehtësohet puna e një zhvilluesi, duke i ndihmuar dhe lehtësuar futjen e të dhënave në bazën e shënimeve, krijimin e aplikacioneve etj.

Për të lehtësuar punën, shumë kompani dhe zhvilluës kanë krijuar vegla dhe framework-at në mënyrë që të bëjnë më të lehtë punën e zhvilluësve. Dy framework-at më të njohura aktualisht janë Laravel dhe Zend, të cilat kanë ofruar zgjidhjët e tyre për zhvillimin e aplikacioneve të vogla, të mesme dhe të mëdha.

Duke marrë parasysh që asgjë nuk është përfekt, edhe këto dy framework-a kanë avantazhet dhe disavantazhet e tyre, të cilat lënë nëvojën për të bërë një hulumtimë dhe krahasim më të thellë. Qëllimi i këtij hulumtimi dhe krahasimi është që të identifikojë mundësit e shfrytëzimit të këtyre framework-ave, ti analizoj dhe vlerësoj përdorimin e tyre në mënyrë sa më efikase dhe efiçiente. Si rezultat, ky hulumtim do të nxjerr aspektet pozitivë të këtyre dy framework-ave, do të identifikojë limitet krahas zhvillimit të projektëve të ndryshme programuese.

I

MIRËNJOHJE/FALËNDERIME

Dëshiroj të shprehë mirënjohjën dhe falënderimin tim për stafin e UBT-së për kontributin dhe përkushtimin e tyre ndaj neve studentëve. Veqanërisht e falënderoj mentorin tim Prof. Betim Gashi, për ndihmën, përkrahjen dhe gatishmërinë e tij gjate punimit të kësaj teme të diplomës.

II

PËRMBAJTJA

LISTA E FIGURAVE ...... V

1 HYRJE ...... 1

2 SHQYRTIMI I LITERATURES (HISTORIKU) ...... 2

2.1 Programimi në anën e Serverit ...... 2

2.2 Programimi në anën e klientit ...... 3

2.3 Çka është PHP? ...... 4

2.4 Çka është Framework? ...... 5

2.5 Çka është bazë e shënimeve?...... 5 2.5.1 Çka është SQL? ...... 6 2.5.2 Evolucioni i bazës së shënimeve ...... 6 2.5.3 Tipat e bazave të shënimeve ...... 6 2.5.4 Bazë e shënimeve jo-relacionale ...... 7 2.5.5 Bazë e shënimeve relacionale ...... 8 2.6 Çka është Laravel?...... 10 2.6.1 MVC ...... 11 2.6.2 ORM në Laravel ...... 11 2.6.3 Bazë e shënimeve në Laravel ...... 12 2.6.4 Krijimi dhe fshirja e tabelave ...... 12 2.6.5 Autentifikimin në Laravel ...... 13 2.6.6 Autentifkimi i përdoruesve ...... 13 2.6.7 Regjistri i përdoruesve ...... 14 2.7 Çka është Zend?...... 15 2.7.1 Bazë e shënimeve në Zend ...... 16 2.7.2 Autentifikimin në Zend ...... 16 2.7.3 Regjistri i përdoruesit ...... 18 3 DEKLARIMI I PROBLEMIT ...... 19

3.1 PYETJET HULUMTUESE ...... 20

4 METODOLOGJIA ...... 21

III

5 RASTI I STUDIMIT ...... 22

5.1 Pse Laravel ? ...... 22 5.1.1 Bërthama dhe Lidhjet e Laravel ...... 23 5.1.2 Lidhjet (Routing) në Laravel ...... 23 5.1.3 Përdorimi i Elokuent ORM në Laravel ...... 24 5.1.4 Testimi ne Laravel ...... 24 5.2 Pse Zend ? ...... 27 5.2.1 Routing në Zend ...... 27 5.2.2 Përdorimi i Doctrine ORM ne Zend ...... 28 5.2.3 Testimi në Zend ...... 29 5.3 Çfarë lloje të bazave të shënimeve përkrahin secili Framework ? ...... 33 5.3.1 Përkrahja e bazave të shënimeve në Laravel ...... 33 5.3.2 Përkrahja e bazave të shënimeve në Zend ...... 33 5.4 Struktura ...... 35

6 PËRFUNDIM ...... 36

7 REFERENCAT ...... 38

IV

LISTA E FIGURAVE

Figura 1: Përdorimi i PHP ne HTML ...... 4 Figura 2: Definimi i atributeve më relacionin 'punetor'...... 10 Figura 3: Definimi i nje Model-it Elokuent ...... 11 Figura 4: Krijimi i Model-it Elokuent ne mënyre tjeter ...... 12 Figura 5: Krijimi i nje Tabele ne baze të shënimeve ...... 12 Figura 6: Ri-emërimi i nje Tabele ...... 12 Figura 7: Specifikimi i lidhjes se Skemës ...... 13 Figura 8: Fshirja e tabelave ...... 13 Figura 9: Krijimi i nje Forme të Regjistrimit të Përdoruesve ne Laravel ...... 14 Figura 10: Krijimi i nje Databaze dhe nje Tabele ...... 16 Figura 11: Shembull i nje Autentifikimin ne Zend...... 17 Figura 12: Krijimi i nje Forme per Regjistrim të Përdoruesit ne Zend ...... 18 Figura 13: Lidhjet e ndërthurura ne Laravel ...... 23 Figura 14: Transformimi i nje SQL Query ne Query funksion ne Elokuent ORM ...... 24 Figura 15: Ilustrimi i nje Kodi per Testime ne Laravel ...... 25 Figura 16: Nje testime tjeter ne Unit-Test (Laravel) ...... 26 Figura 17: Përdorimi i Routingut ne Zend...... 27 Figura 18: Krijimi i nje Tabele përmes Doctrine ORM ne Zend ...... 28 Figura 19: Lidhja e bazës se shënimeve ne Doctrine ORM – Zend ...... 29 Figura 20: Instalimi i Unit-Test ne Zend ...... 29 Figura 21: Krijimi i nje pjesë testuese ...... 29 Figura 22: Testimi i "Album" të krijuar më lartë ...... 30 Figura 23: Testimi i "Album" ne Sistemin Operativ 'Windows' ...... 30 Figura 24: Rezultati i testimit ...... 30 Figura 25: Krijimi i nje Kontrolleri ...... 31 Figura 26: Testimi i Indexit ...... 31 Figura 27: Inicializimi i testimit ...... 32 Figura 28: Rezultati i testimit ...... 32

V

Figura 29: Lidhja e nje bazës se shënimeve përmes nje Adapteri ...... 34

VI

FJALORI I TERMËVE

Framework – Një skeleturë e programimit e bazuar në një gjuhë programuese PHP/FI & PHP – Gjuhë programuese ORM – Lejon ruajtjen në objekte në bazë të dhënash relacionale Laravel – Framework Zend – Framework CGI – Mundëson transferimin e të dhënave nga një ueb-server në një program të jashtëm – Framework CakePHP – Framework MVC – Një shabllon i ndarjës së softuerit në tri pjesë : Model – View - Controller ASP.NET – Është një ueb-framework dinamik i krijuar nga – Është nje ueb-framework i bazuar në gjuhën programuese Ruby – Është nje ueb-framework i bazuar në gjuhën programuese Ruby Zend Framework 1 & Zend Framework 2 – Frameworka Project – Frameworki pas-ardhës i Zend AWS – Amazon Ueb Service, është një infrastrukturë e IT-së e cila ofrohet nga Amazon Export Libs – Library – Është një menaxher i paketave i orientuar në aplikacionet për gjuhën programuese PHP Packagist – Është një Repository i Composer SQL – Është nje gjuhë në bazën e të dhënave për të definuar një strukturë të dhënash URI – Është një identifikator i cili përbëhët nga një rreshtë shifrash që ndihmon në identifikimin e një resursi abstrakt apo fizik SAAS – Softuerë si një servis ERP – ERP merret më planifikimin e resurseve të një kompanie RDBMS – Është një sistem i cili merret më menaxhimin e një bazë të të dhënave relacionale ADAPTER – Është objekti qendrorë i përbërësit të bazës së shënimeve në Zend

Oracle, DB2, SQL Server, MySQL dhe PostgreSQL – Bazë e shënimeve relacionale

VII

1 HYRJE

Pas krijimit të kompjuterëve dhe gjuhëve të para programuese, në vitin 1994 si një pasardhës i një produkti më të vjetër, e krijoj gjuhën që në atë kohë quhej PHP/FI. Fillimisht PHP/FI ishte një set i programeve të CGI për të mundësuar çasjen uebfaqen e tij. Ketë set të skriptave ai i quante “Personal Home Page Tools” apo shqip “Vegla për Uebfaqe Personale”, apo ndryshe “PHP Tools”. Kur më vonë pati nevojë për më shumë funksione, Rasmus-i e zgjeroj dhe e shtoj edhe mundësin e komunikimit më bazën e shënimeve. Në vitin 1995 Rasmus vendosi të publikonte Kodin e Burimit apo ndryshe “”, ashtu që të gjithë kishin mundësi të përdornin, të korigjonin gabimet dhe të zhvillonin edhe më shumë. Kështu që në vitet e ardhshme filluan edhe zhvillimet e framework-ave të bazuara në PHP të cilat ua lehtësojnë zhvilluëseve punën e tyre. Disa nga framework-at të bazuara në PHP janë Laravel, Symfony, Zend, CakePHP e kështu më radhë. Dy framework-at të cilat përdorën më shumë dhe të cilat në do bëjë krahasimin e tyre janë framework-i Laravel dhe framework-i Zend. Mirëpo edhe këto framework të ofruara për të lehtësuar punën, kanë përparesitë dhe mangësitë e tyre, të cilat lënë nevojën për të bërë një hulumtim dhe krahasim më të thellë. Kështu që qëllimi i këtij hulumtimi dhe krahasimi është që të identifikoj mundësit e shfrytëzimit të këtyre framework-ave, si dhe ti analizoj, krahasoj dhe vlerësoj përdorimin e tyre në mënyrë sa më efikase dhe efiçiente. Si rezultat, ky hulumtim do të nxjerr aspektet pozitivë të këtyre dy framework-ëve, identifikimi i limiteve, si bëhet ruajtja e të dhënave në bazën e shënimeve dhe do të shohim se në cilin rast është më mirë ta përdorim njërën apo tjetrën.[1]

1

2 SHQYRTIMI I LITERATURES (HISTORIKU)

Në ketë kapitull e kam bërë shpjegimin se si funksionon Laraveli dhe Zendi, gjithashtu kam shpjeguar pjesët e brendshme të këtyre framework-ave, kam hulumtuar funksionet, dobitë dhe mangësitë e perdorimit të tyre.

2.1 Programimi në anën e Serverit

Ueb-shfletuësit komunikojnë më ueb-serverat duke përdorur HyperText Transfer Protocol (HTTP). Kjo ndodhë kur për shembull klikon në ndonjë link në ndonjë uebfaqe, e mbush dhe e dërgon ndonjë formularë në ndonjë uebfaqe apo kerkon diçka në internet. Atëher dërgohet një HTTP kërkesë, nga shfletuësi të cilin e përdorim, drejtë një serveri të caktuar. Kjo kërkesë përmban një link i cili e identifikon resursin të cilin shfrytëzuesi e kërkon në server, një metodë e cila e definon se çka do të bëhet më atë resurs (për shembull: të shfaqet, të fshihet apo të publikohet resursi). Ueb-serveret presin për kërkesën e shfrytezuësit, e procesojnë atë sapo të arritë, dhe pastaj bëhet kthimi i mesazhit apo ndryshe ‘HTTP response’ tek shfletuësi ynë. Mesazhi që kthehët tek ne e përmban një rresht që i përket statusit ku dhe tregohet se kërkesa ka pas apo jo sukses, për shembull ‘HTTP/1.1 200 OK’, nëse kerkesa ka pasur sukses. Programimi në anën e serverit është një mënyrë shumë e mirë për arsye se na lejon të dërgojmë të dhëna në mënyrë efiçiente dhe individuale për secilin shfrytëzuës. Kompanitë e mëdha si Amazon e përdorin programimin në anën e serverit për të krijuar rezultate më të mira të kërkimit për produktet, të shfaqën si sugjerime produktet për shfrytezuesin sipas preferencës së tij dhe duke shikuar edhe blerjen paraprake që një shfrytëzuës ka bërë. Bankat e përdorin programimin në anën e serverit për të ruajtur informacione dhe në këtë mënyre lejohët vetëm çasja e personave të autorizuar për të shikuar gjendjën e llogarisë apo për të kryer ndonjë transaksion.

2

Disa nga benefitet e perdorimit të programimit kah ana e serverit janë: • Ruajtja efiçiente dhe dërgesa e informative • Përshtatje e përmbajtjes për secilin shfrytëzuës veç e veç • Qasje e kontrolluar në resurse • Njoftimi dhe komunikimi • Analizimi i të dhënave

Si përfundim kam nxjerr se programimi në anën e serverit përdoret në ueb server dhe se roli i tij kryesor është se çfarë informata dërgohen tek shfrytëzuesi. Është shumë i përdorshëm për arsye se na lejon të krijojmë uebfaqe të cilat në mënyre efiçiente dërgojnë të dhëna të personalizuara veç e veç për secilin shfrytëzues. Kodi per kah ana e serverit mund të shkruhët në shumë gjuhë programuëse të ndryshme.[2]

2.2 Programimi në anën e klientit

Në zhvillim në ueb ‘client side’ apo ana e klientit i referohet çdo gjë që shfaqet apo ndodh kah ana e klientit në ueb aplikacion. Kjo normalisht përfshin se çka sheh shfrytëzuesi si për shembull tekstin, fotot dhe komplet ‘UI’ apo dizajnin. Gjuhet si HTML apo CSS interpretohët nga ueb-shfletuesi kah ana e klientit. Në kohën moderne zhvilluësit po shkojnë drejtë asaj që po largojnë disa elemente nga ana e serverit dhe po i implementojnë në anën e klientit, të cilat gati se gjithmonë janë të zhvilluara në JavaScript.[3]

3

2.3 Çka është PHP?

PHP është një gjuhë programuese e njohur dhe e cila është shumë e përshtatshme të përdoret për zhvillim në ueb për arsye se mund të përdoret shumë mirë më HTML.

Figura 1: Përdorimi i PHP në HTML

Në vend që të krijohet një aplikacion më shumë kod për të shfaqur diçka në gjuhën HTML, e shkruan më pak kod në HTML dhe fut dhe një pjesë të kodit të PHP e cila bënë ndonjë gjë të caktuar, në këtë mënyrë bëhët uebfaqja dinamike pasi që mund të shkruani ndonjë kod i cili për secilën e-mail të caktuar shfaq emrin e ruajtur në bazën e shënimeve. Se çka është bazë e shënimeve e kam shqyrtuar në pikën tjetër. Në kodin e paraqitur në figurën 1 ka për tu shfaqur vetëm ai shkrimi i cili është në thojza “Hallo, Ich bin ein PHP-Skript!”, ndërsa që të kemi mundësi që të shkruajm kod të PHP në HTML duhet gjithsësi të përdorën ‘’ e cila e mbyllë pjesën e PHP-se. Gjithashtu mund edhe vetëm të hapët ‘

4

2.4 Çka është Framework?

"Framework" është anglisht për "strukturën kornizë" - por çfarë saktësisht do të thotë kjo për sa i përket teknologjisë? Termi luan një rolë të veçantë në zhvillimin dhe programimin e softuerë-ve dhe e bën punën më të lehtë për zhvilluësit. Sepse një kornizë ndihmon një gjë mbi të gjitha: kurseni kohë. Një kornizë apo framework nuk është një program apo mjetë i veçantë në zhvillimin e softuerit, por diçka si një shabllon. Aplikacionet, ueb-faqet dhe elementët e tjerë të programeve kompjuterike përbëhen nga struktura - siç janë elementet e një gjuhe shfaqjeje siç është HTML. Këto struktura janë duke përsëritur në fusha të ngjashme të aplikimit. Për shembull, nëse një zhvilluës i faqës në internet dëshiron të hartojë një dyqan online, kodi bazohët në linja shumë të ngjashme. Një kornizë tani është përbërja e blloqeve përkatëse të ndërtimit për këtë dyqan online. Duhet të bëhen vetëm hyrje shumë specifike, por jo edhe të shkruhet kodi i plotë. Kjo kursen shumë kohë në zhvillim. Disa nga framework- at apo kornizat të cilat përdorën janë:

• Laravel • Zend apo Laminas • Symfony, etj. [5]

2.5 Çka është bazë e shënimeve?

Bazë e shënimeve është një koleksion i organizuar i informacioneve të strukturuara, apo të dhëna, zakonisht ruhën në mënyre elektronike në një sistem kompjuterikë. Një bazë e shënimeve kontrollohet zakonisht nga një sistem i bazave të të dhënave (DBMS). Të dhënat se bashku më Management System, së bashku me aplikacionet të cilat janë të ndërlidhura më të, zakonisht ju referohemi si një sistem e bazave të shënimeve e cila shpeshëherë edhe njihet vetëm si bazë e shënimeve. Në ditën e sotme tipat më të shpeshtë të bazës se shënimeve që zakonisht përdoren janë të modeluar në rreshta dhe kolona e cila e lehtëson dhe e bënë më efiçiente kërkesën në bazën e shënimeve. Të dhënat pastaj mundën shumë lehtë të ju çasen, menaxhohen, modifikohen, afishohen, kontrollohen dhe

5 organizohën. Në ditën e sotme struktura më e përdorur e bazës se të dhënave është structured query language (SQL) për të shkruar dhe kërkuar të dhëna.

2.5.1 Çka është SQL?

SQL është një gjuhë programuese e cila përdorët po thuajse nga të gjitha bazat e shënimeve relacionale, për të kërkuar, manipuluar dhe definuar të dhëna gjithashtu përdoret për të lejuar qasje. SQL fillimisht është zhvilluar në IBM në vitet e ‘70ta, më Oracle si kontribuesi më i madhë. Nga kjo ka rrjedh implementimi i SQL ANSI si Standard.

2.5.2 Evolucioni i bazës së shënimeve

Bazat e shënimeve kanë evoluar shumë që nga zanafilla në vitet e ‘60ta. Bazë e shënimeve i lundrimit ‘Navigational’, si për shembull bazë e shënimeve hierarkike (e cila është bazuar në modelin e pemës dhe ka lejuar vetëm lidhje një-më-shumë), dhe bazë e shënimeve i rrjetshëm ‘Network’ (një model më fleksibil i cili ka lejuar edhe lidhje shumë-më-shumë), ishin sistemet fillestare të perdorura për të ruajtur dhe manipuluar më të dhëna. Ani pse ishin të thjeshta, këto sisteme nuk ishin aspak fleksibile. Në vitet e ‘80ta filloj të përdoret më shume bazë e shënimeve relacionale, e ndjekur nga bazë e shënimeve e bazuara në objekte e cila ka filluar të përdoret më shume në vitet e ‘90ta. Në kohën e fundit ka filluar edhe përdorimi i bazës së shënimeve NoSQL, e cila është një përgjigje për rritjen e perdorimit të internetit dhe nevojat për një procesim të të dhënave të cilat nuk janë të strukturuara. Tashme është bërë shumë e popullarizuar bazë e shënimeve e ruajtur në ‘cloud’.

2.5.3 Tipat e bazave të shënimeve

• Bazë e shënimeve relacionale • Bazë e shënimeve e orientuar në objekte • Bazë e shënimeve NoSQL

Bazën e shënimeve relacionale dhe jo-relacionale do e shtjellojë në vazhdim.[6]

6

2.5.4 Bazë e shënimeve jo-relacionale

Bazë e të dhënave jo-relacionale apo NoSQL janë zhvilluar posaçërisht për modele të caktuara të të dhënave dhe kanë skema fleksibël për krijimin e aplikacioneve moderne. Bazë e të dhënave NoSQL është e njohur për lehtësinë e tyre të zhvillimit, funksionalitetit dhe shkallëzueshmërisë. Bazë e të dhënave NoSQL përdor modele të ndryshme të të dhënave për të hyrë dhe menaxhuar të dhënat. Këto lloje të bazave të të dhënave janë optimizuar posaçërisht për aplikacionet që kërkojnë sasi të mëdha të të dhënave, më latente të ulët dhe modele fleksibël të të dhënave. Këtu është një shembull i modelimit të skemës për një bazë të dhënash të thjeshtë të librave:

Në një bazë të dhënash relacionale, një regjistrim librash shpesh prishet (ose "normalizohët") dhe ruhet në tabela të veçanta. Marrëdhëniet përcaktohen nga kufizimet kryësore dhe të huaja. Në këtë shembull, tabela e librave ka kolona për ISBN, titullin e librit dhe numrin e botimit, tabela e autorët ka kolona për ID e autorit dhe emrin e autorit, dhe tabela e autorët ISBN ka kolona për ID e autorit dhe ISBN. Modeli i marrëdhënies është krijuar në mënyrë që bazë e të dhënave të mund të forcojë integritetin referencial midis tabelave në bazën e të dhënave. Është normalizuar për të zvogëluar tepricën dhe përgjithësisht e optimizuar për ruajtje. Në një bazë të dhënash NoSQL, një rekord libri zakonisht ruhët si një dokument JSON. Për secilin libër, elementët ISBN, titulli i librit, numri i botimit, emri i autorit dhe ID e autorit ruhën si atribute në një dokument të vetëm.

Në këtë model, të dhënat optimizohën për zhvillim intuitiv dhe shkallëzim horizontale. Bazë e të dhënave NoSQL është e shkëlqyeshme për shumë aplikacione moderne siç janë aplikacionet mobile, ueb dhe lojëra që kërkojnë bazë të të dhënave fleksibël, të shkallëzueshëm, më performancë të lartë dhe shumë funksionale për të siguruar një përvojë të shkëlqyeshme të përdoruesit. Fleksibiliteti: Bazat e shënimeve NoSQL në përgjithësi ofrojnë skema fleksibël që mundësojnë zhvillim më të shpejtë dhe përsëritës. Modeli fleksibël i të dhënave i bën bazat e të dhënave NoSQL ideale për të dhëna gjysmë të strukturuara dhe të pa strukturuara.

7

Shkalluëshmëria: Bazat e të dhënave NoSQL janë krijuar zakonisht për të shkallëzuar duke përdorur grupe të shpërndara harduerësh, në vend se të shtojnë serverë të shtrenjtë dhe të fuqishëm. Disa ofrues të cloud e bëjnë këtë prapa skenave si një shërbim i menaxhuar plotësisht.

Fuqishëm: Bazat e të dhënave NoSQL janë optimizuar për modele të caktuara të të dhënave dhe modele të qasjes, të cilat mundësojnë performancë më të lartë sesa nëse përpiqeni të arrini funksione të ngjashme më bazat e të dhënave relacionale.

Shumë funksionale: Bazat e të dhënave NoSQL ofrojnë API shumë funksionale dhe llojet e të dhënave që janë zhvilluar posaçërisht për secilin nga modelet e tyre përkatëse të të dhënave. Për dekada të tëra, modeli i të dhënave relacionale të përdorura nga bazat e të dhënave relacionale si Oracle, DB2, SQL Server, MySQL dhe PostgreSQL ka qenë modeli kryësor i të dhënave në zhvillimin e aplikacionit. Për të bërë diferencimin dhe kategorizimin e këtyre klasave të reja të bazave të të dhënave dhe modelëve të të dhënave, u krijua termi "NoSQL". [7]

2.5.5 Bazë e shënimeve relacionale

Siç dihet, bazat e të dhënave janë një nga komponentët thelbësorë të çdo sistemi kompjuterikë. Sepse çdo program kompjuterikë akseson të dhënat gjatë kohës së funksionimit të tij ose madje gjeneron informacione që duhet të ruhën në mënyrë të besuëshme, pa kundërshtime dhe përgjithmonë. Kjo bëhet në bazat e të dhënave të strukturuara (DB), të cilat menaxhohën nga të ashtuquajturat sisteme të menaxhimit të bazës së të dhënave (DBMS). Sistemet e menaxhimit të bazës së të dhënave janë aplikacione softuerike që bashkëveprojnë më përdoruesit fundorë ose programet e tjera dhe u sigurojnë atyre një nënbashkësi të bazës së të dhënave të ruajtur në bazën e të dhënave. Deri më tani, menaxhimi elektronik i të dhënave është mbizotëruar nga modeli i bazës së të dhënave relacionale. Sistemet më të përdorura për menaxhimin e bazës së të dhënave relacionale (RDBMS) përfshijnë sipas rendit alfabetik:

8

Db2: Më Db2, një sistem i administrimit të bazës së të dhënave të pronarit nga IBM është i disponueshëm për përdoruesit nën një licencë tregtare.

Microsoft SQL Server: Sistemi i menaxhimit të bazës së të dhënave relacionale të Microsoft është në dispozicion nën një licencë të përdoruesit të paguar të Microsoft-it.

MySQL: MySQL është RDBMS më burim të hapur më të përdorur në botë. Që nga marrja në dorë e Oracle, MySQL është tregtuar në një sistem të licencimit të dyfishtë. Komuniteti origjinal i zhvilluesve vazhdon projektin më emrin MariaDB.

PostgreSQL: Më PostgreSQL, përdoruesit mund të qasen në një sistem të menaxhimit të të dhënave relacionale falas, objektive (ORDBMS). Zhvillimi kryhet nga një komunitet më burim të hapur. Bazë e të dhënave Oracle: Sistemi i menaxhimit të bazës së të dhënave relacionale të kompanisë më të njëjtin emër, Oracle, tregtohet si softuer i pronarit për një tarifë.

SQLite: SQLite është një bibliotekë e programeve më domenë publike që përmban një sistem të menaxhimit të bazës së të dhënave relacionale.

Të gjitha sistemet e përmendura bazohen në një organizim tabelar të informacionit. Një koncept kryesor i modelit të bazës së të dhënave relacionale është relacioni. Kjo kthehet të matematikani britanik dhe teoricieni i bazës së të dhënave Edgar F. Codd. Sipas Codd, një lidhje paraqet një grup entitetesh më të njëjtat veti. Çdo lidhje përbëhet nga një seri të regjistrave të të dhënave (të ashtuquajturat tuples), vlerat e të cilave u caktohen atributeve të caktuara. Cilat atribute përmbajnë një lidhje dhe të cilat lloji i të dhënave vlerat e dhëna atributeve korrespondojnë më përcaktohet duke përdorur një skemë lidhjëje sipas sintaksës së mëposhtme: R = (A1: Type1, A2: Type2,…, To: Type) Skema e marrëdhënieve (R) përfshin atributet A1bis An. Një tip i të dhënave (Type1, Type2 etj) i është caktuar secilit atribut. Kjo mund të ilustrohet më një shëmbull konkret.

9

Skema e mëposhtme përcakton atributet e marrëdhënies "punonjës":

Figura 2: Definimi i atributeve më relacionin 'punetor'

Skema e shembullit përfshin atributet ID të punonjësve (m_id), mbiemrin, emrin, emrin e numrit të sigurimeve shoqërore (svn), rrugën (str), kodin postar (plz) dhe qytetin dhe mund të përdoret, për shembull, për menaxhimin e brendshëm të të dhënave të personelit. Një tip i të dhënave (p.sh. vargu ose numër i plotë) i është caktuar secilit atribut. Kështu që, në këtë lidhje ekzistojnë atribute që presin vargjet si vlera dhe ato që pranojnë vetëm numra të plotë. [8]

2.6 Çka është Laravel?

Laravel-i është një PHP-framework i cili është pa pages, më të cilen mund të zhvillohën uebfaqe dhe ueb-aplikacione, të cilët e përdorin shabllonin e Model-View-Controller (MVC).

Laravel-i kombinon funksionët më të rëndësishme të ueb-framework-ave tjera të cilat nuk bazohën në gjuhën programuese PHP si për shembull Ruby on Rails, Sinatra dhe ASP.NET.

Verzioni i pare i Laravel-it është publikuar në vitin 2011 nga Taylor Otwell. Laravel-i është krijuar si një alternative e framework-it CodeIgniter, për arsye se ky framework nuk ka perkrahur një funksion të integruar për të kontrolluar çasjen (autentifikimin) e përdoruesve. Laravel-i në kohën e publikimit të tij, ka perkrahur funksionet si autentifikimin e përdoruesit, lokalizimi i gjuhës, model (modeli i të dhënave), view (pamja), routing (lidhjet), sessions (sesionet) dhe disa mekanizma të tjerë.

10

Mirëpo mungonte përkrahja e Controller (Kontrollimi i programit) dhe kjo është arsyea pse laravel 1 nuk është njohur si MVC-framework i plotë. Kjo mungesë është plotësu më publikimin e laravel 2 në po atë vitë. [9]

2.6.1 MVC

Është nje arkitekturë softuerike, e cila ndan softuerin në tri pjesë kryësore. Në model-in (modeli i të dhënave), në view (pamje) dhe në controller (kontrollimi i programit). Pastaj këto tri pjesë mund të zhvillohen pavarësish nga njëra tjetra. [9]

2.6.2 ORM në Laravel

ORM elokuente në laravel siguron një ActiveRecords (Rekord Aktiv), i thjeshtë për t’u përdorur në lidhje më bazën e shënimeve. Çdo tabelë në bazën e shënimeve e ka një Model koresponduës, e cila përdoret për të bashkëpunuar më atë tabelë. Para se të fillohet punimi në bazën e shënimeve duhet të sigurohemi që fillimisht kemi një lidhje më bazën e shënimeve në follderin ‘config’ në fajllin ‘database.php’.

Për të startuar fillimisht duhet të krijohet një model elokuent. Si rregull model-et janë të vëndosura në follderin ‘app’, por nuk ndalohët edhe zhvendosja në ndonjë follder tjetër të projektit për derisa është zhvendosur sipas auto-loading “ngarkim automatik” e cila është rregulluar në fajllin ‘composer.json’. Të gjitha model-et elokuente zgjerohën nga Illuminate\Database\Eloquent\Model.

Figura 3: Definimi i një Model-it Elokuent Në figurë është paraqitur një shembull se si bëhet trashëgimi i një Model-i Elokuent.

11

Figura 4: Krijimi i Model-i Elokuent në mënyre tjeter

Një mënyre tjetër e krijimit të model-it elokuent është përmes komandës “make:model”. [10]

2.6.3 Bazë e shënimeve në Laravel

Klasa ‘Schema’ në laravel ofron një bazë të shënimeve agnostike për të manipuluar më tabela. Funksionon më të gjitha bazat e shënimeve të përkrahura nga laravel-i, dhe posëdon një API të unifikuar në të gjitha sistemet. [10]

2.6.4 Krijimi dhe fshirja e tabelave

Figura 5: Krijimi i nje tabele ne baze të shënimeve

Për të krijuar një bazë të shënimeve të re, përdoret metoda “Schema::create”. Argumenti i parë i cili i jepet metodës “create”, është emri i tabelës, argumenti i dytë është mbyllja e cila do të marrë një objekt të projektit i cili mund të përdoret për të përcaktuar tabelën e re.

Figura 6: Ri-emërimi i nje Tabele

Për të ri-emëruar një tabelë në laravel, përdoret metoda “Schema::rename”.

12

Figura 7: Specifikimi i lidhjes se skemës

Për të specifikuar se në cilën lidhje skema e krijuar do të jetë, përdoret metoda “Schema::connection”.

Figura 8: Fshirja e tabelave

Për të bërë fshirjen e një tabele përdoret metoda “Schema::drop”. [10]

2.6.5 Autentifikimin në Laravel

Laravel-i e bënë implementimin e autentifikimit shumë të thjeshtë pasi që thuajse çdo gjë vetë-konfigurohet gjatë instalimit të laravel-it. Fajllat e autentifikimit janë të lokalizuara në follderin ‘config’, në fajllin ‘auth.php’. Laravel-i përfshin një model “App\User” në follderin ‘app’. Ky model mund të përdoret më drajverin elokuent të autentifikimit të laravel-it. [9]

2.6.6 Autentifkimi i përdoruesve

Pasi të instalohet Laravel-i, mund të gjejmë dy controllera të para instaluar për ne. Kontrolleri “AuthController” merret më përdoruesit e rinjë që regjistrohen dhe më kyçjen e perdorursëve që tani më janë të regjistruar. Kontrolleri “PasswordController” merrët më menaxhimin e fjalëkalimëve për përdoruesit e regjistruar.

Sëcili nga këta kontrollera e përdorin një tipar të tyre për të përfshirë metodat e nevojshme për të funksionuar. Për shumë ueb-aplikacione nuk do të ketë nevojë të përpunohen këta

13 kontrollera. Këta kontrollera në laravel gjendën në follderin “resources/views/auth” dhe mund të përpunohen nga zhvilluesi sipas nevojës. Autentifikimin i përdoruesve në rastet më të shpeshta bëhet duke autentifikuar përdoruesit në baze të ID-se. [9]

2.6.7 Regjistri i përdoruesve

Për të përpunuar fushat e formës të cilat janë të domosdoshme kur një përdorues i ri regjistrohet, duhet të përpunohet klasa në “App\Sercies\Registrar”. Kjo klasë është përgjegjëse për validimin dhe krijim e një përdoruesi të ri.

Metoda ‘validator’ e regjistrit “Registrar” përmban rregullat e validimit për përdoruesit e ri. Ndërsa metoda ‘create’ e regjistrit “Registrar” është përgjegjëse për të krijuar rekorde të reja në bazën e shënimeve. Kjo mund të ndryshohet sipas nevojës së projektit aktual. Regjistri thirret nga kontrolleri “AuthController” duke përdorur Metodat të cilat gjendën në “AuthenticatesAndRegistersUsers”.

Më poshtë është paraqitur se si mund të krijohet një formë për regjistrimin e përdoruësve. [9]

Figura 9: Krijimi i një forme të regjistrimit të përdoruesve në laravel

14

2.7 Çka është Zend?

Pasi që gjuha programuese PHP kishte bërë 10 vjetë që ishte lansuar, filluan në vitin 2005 dhe 2006 shumë framework-a të bazuara në PHP më u publiku, të cilat edhe sot përdoren. Përveç framework-it Symfony dhe CakePHP ishte Zend framework e cila ishte publikuar po në atë kohë. Në fillim të vitit 2006 është publikuar verzioni i parë 0.0.1 alpha. Dikun një vitë më vonë është lansuar verzioni 1.0.0, ky ishte verzioni i parë produktiv apo ndryshe që njihet edhe si ZF1. ZF1 ofronte më shumë se 60 komponentë, deri në vitin 2016 rregullisht është afishuar dhe është përmirësuar. Pas lansimit të ZF2, suporti për ZF1 ka vazhduar edhe katër vite të tjera. Arsyea e këtij suporti ishte sepse kemi edhe sot projekte të cilat janë të bazuara dhe funksionojne ende më ZF1. Pas disa problemeve në Shtator të vitit 2012 është lansuar ZF2. Shumë nga komponentët e ZF1 janë bartur në ZF2, po ashtu janë krijuar edhe shumë komponentë të reja për ZF2. Pastaj në Qershor të vitit 2016 është lansuar edhe ZF2 dhe Zend/Expressive. Pas këtij lansimi nuk ka pasur më lansime të reja të framework-it por komponentët janë transformuar dhe tashmë se cila komponentë e ka Repository-n e vetë në të cilat lansohen afishime ndaras nga njëra tjetra. Instalimi i ZF3 përmban vetëm një fajll në të, i cili është ‘composer.json’. Në vitin 2015 kompania “Zend Technologies” është shitur tek kompania “Rogue Wave Software” ndërsa në vitin 2019, kompania “Rogue Wave Software” është blerë nga kompania Perforce. Në Prill të vitit 2019 është publikuar se i gjithë projekti “Zend” ka për tu transferuar në Foundation.

Pasi që emri “Zend framework” është pronë e një Kompanie, është dashtë t’iu ndërrohet edhe emri nga “Zend” në “Laminas Projekt” gjithashtu krahas kësaj është publikuar edhe një ueb- faqe e re për Laminas Projekt. Laminas është fjala në shumës e fjalës “Lamina” e cila ka kuptimin “Shtresë e hollë”. Çdo gjë që ishte në Zend do të shuhet dhe të transferohen në Repositories të reja të Laminas. [11]

15

2.7.1 Bazë e shënimeve në Zend

Ashtu si në Laravel edhe Zend është e bazuar në “Model-View-Control”. Model-i është pjesa e cila merrët më qëllimin kryesore të aplikacionit i cili është duke u zhvilluar dhe ndryshe quhët edhe si ‘business rules’ (rregullat e biznesit) dhe në rastin të cilin unë do ta analizoj më vonë. Në Zend klasa ‘Zend\Db\TableGateway\TableGateway’ përdoret për të gjetur, shtuar, afishuar apo fshijë rreshta nga një tabelë në bazën e shënimeve.

Figura 10: Krijimi i një Databaze dhe një Tabele

Ky kod në Figurën 7, paraqet mënyrën se si krijohët një tabelë në të më emrin “album” dhe si të futen disa të dhëna në atë tabelë. [12]

2.7.2 Autentifikimin në Zend

Komponenti “Zend\Authentication” ofron një API për autentifikim e cila përfshin autentifikime konkrete për rastet më të shpeshta. Në Zend “Zend\Authentication” merret vetëm më autentifikim por jo edhe më autorizim. Autorizimi se a lejohet një qasje në entitete apo të performohet ndonje funksion nuk është në dorën e “Zend\Authentication”.

16

Zend përdor të ashtu quajturi “adapterë” në “Zend\Authentication” e cila veçanarisht merrët më autentifikim. Secila klasë e adaptereve në Zend\Authentication implementon “Zend\Authentication\Adapter\AdapterInterface”, ky interfejs e definon një metodë, “authenticate()”, të cilën një klasë adapter duhet ta implementon që më pas mundësi të kryhet autentifikimin.

Figura 11: Shembull i një Autentifikimin ne Zend

Shembulli i paraqitur në figurën 8 kërkon që të jepet një ‘username’ dhe ‘password’për autentifikim. [11]

17

2.7.3 Regjistri i përdoruesit

Më poshtë është ilustruar se si mund të krijohet një formë për regjistrimin e përdoruesve në Zend. [11]

Figura 12: Krijimi i një Forme për Regjistrim të Përdoruesit në Zend

18

3 DEKLARIMI I PROBLEMIT

Pas përshkrimit të dy Framework-ave të cilat kemi për ti krahasuar më vonë si dhe pas shtjellimit të pikave kryesore të këtyre Framework-ave, i vjen rradha shtjellimit të problemit. Zhvilluesit e ueb-aplikacioneve të cilët e kanë fokusin në zhvillimin e një aplikacionit i cili i përshtatet trendit rritës dhe i cili duhet të jetë në çdo moment stabil por që duhet edhe të ketë mundësin e rritjës së aplikacionit kah ana zhvillimore, Framework-at dalin në ndihmë për të realizuar një aplikacion apo softuerë sa më stabil dhe në kohë sa më të shkurtër. Pasi që sfida kryesore të zhvilluesve softuerik në kohën kur është punuar kjo temë e diplomës është se aplikacionet duhet të zhvillohën sa më shpejtë dhe më mundësi të rritjes në të ardhmen si rezultat i suksesit të atij aplikacionit. Kjo është arsyea pse është mirë të përdorën Framework-at të cilat gjithmonë afishohën që të ofrojnë shpejtësinë, sigurinë dhe stabilitetin. Por së cili Framework të zgjedhët për të punuar projektin më të do të shohim në vazhdim pasi që kjo temë e diplomës ka per qëllim krahasimin e dy Framework-ave më të famshme të kësaj kohë, do të shohim se cili Framework përshtatet më shumë për nga siguria, cili Framework është më stabil dhe se cili Framework është më i lehte për t’u përdorur.

Në ketë punim diplome, do të paraqiten hulumtime dhe krahasime të ndryshme të zhvillimit të aplikacioneve të koduara në Framework-at Laravel dhe Zend. Si rezultat në fund do të paraqiten vlerësimet se cila nga këto dy Framework-at janë më të pershtatshme si dhe duke u bazuar në pyetjet hulumtuëse.

19

3.1 PYETJET HULUMTUESE

Për të qenë i saktë në krahasimin tim dhe të jem neutral unë do të mundohëm që të shtjellojë katër pika apo thënë më mire pyetjet hulumtuese të cilat janë më të rendësishme për t’u diskutuar:

1. Cili prej Framework-ave e ka strukturën më të organizuar për zhvillim? 2. Cili ka Routing më të pershtatëshme? 3. Çfarë lloje të bazave të shënimeve përkrahin secili Framework ? 4. Cili ofron përshtatshmëri më të mire për fillestar?

Në bazë të ketyre pikave apo pyetjeve hulumtuese do të bëhet krahasimi Framework-it të Laravel dhe Framework-it të Zend.

20

4 METODOLOGJIA

Metodologjia të cilën e kam përdorur në ketë punim diplome është bërë duke analizuar dhe lexuar artikuj të ndryshëm të zhvilluësve të ndryshëm të cilat kanë një përvojë mjaftë të gjatë dhe është hulumtuar për përparësitë dhe mangësitë e ndryshme në zhvillim, mirëmbajtje përformancë etj.

Gjatë hulumtimeve qe i kam bërë duke pasur parasysh se kemi ngjashmëri në këto dy Framework-a rendësi të veqantë i kam kushtuar edhe krahasimëve të cilat janë bazuar ne kohën e ekzekutimit, përdorimin e memories dhe numrin e funksioneve të thirrura, një eksperiment është kryer etj.

Në kapitujt në vazhdim do të beje përshkimin më të detajishem të pikave të lartë cekura të cilat na japin informatat se çka duhët të zgjedhim për një aplikacion i cili ka primarë stabilitetin, përdorimin dhe menaxhimin në rastë të një rritje të vazhduëshme të aplikacionit dhe në fund do të bëhet vlerësimi i këtyre dy Framework-ave që do të jete një pasqyre mjaftë e qartë për zhvilluësit, ku jam munduar që të jem i pa anshëm varësisht preferencave personale dhe eksperiencës time më Laravel ose Zend.

21

5 RASTI I STUDIMIT

Një kod i ndonjë programi përmban copëza të kodit të cilat janë bashkuar për të kryer ndonjë funksion, pikërisht për këtë pjesë janë zhvilluar edhe Framework-at. Framework-i e lehtëson punën si zhvillues për arsye se vjen si një skeletor apo themi ndryshe e para-programuar. Kjo do të thotë se kemi disa funksione të cilat i kemi të gatshme dhe vetëm duhet ti përdorim. Pra kur do qe na duhët e thërrasim funksionin pa pasur nevojë të shkruajmë funksionin e njëjtë më shume se një hërë.

5.1 Pse Laravel ?

Laravel është një Framework i cili në vitet e fundit ka arritur të ketë mjaftë përdorim, pasi qe Laravel është një Framework i cili për t’u përdorur nuk duhet të jetë ekspertë i PHP-së. Mënyra se si është ndërtuar Laravel, është mënyrë shumë e lehtë për t’u kuptuar dhe nuk duhët të humbësh shume kohë derisa ta analizojsh strukturën e brendëshme pasi që është bërë një ndarje shumë e mirë e Front-End më Back-End. Laravel: • ka një bërthamë shumë funksionale e cila sipas nevojës mund edhe të zgjerohët • lidhjet () në Laravel bëhet në mënyrë shumë të thjeshtë dhe të pastër • ORM dhe shtresat në bazën e shënimeve i ka shumë efektive • Integrim shumë i lehte më librari të jashtme si AWS, export libs etj. Mund të përdoret Composer apo Packagist për ti integruar në projekt • Komunitet shumë aktiv dhe në rritje të siper i cili na ndihmon shumë shpejt për ndonjë problem eventualë. • Testimi “Unit” instalohet përgjatë instalimit të vetë Framework-it [13]

22

5.1.1 Bërthama dhe Lidhjet e Laravel

Bërthama (Core) e Laravel strehohët në GitHub. Bërthama e Laravel e implementon një IoC paternë i cili na lejon që të përshtatim, ri-shkruajmë cilëndo pjesë të Laravel Framework. Dizajnerat e Laravelit nuk kanë humbur shumë kohë më disa gjëra të cilat veç kanë ekzistuar, kjo shihët shumë mirë në konzolen ‘Artisan’ e cila është marrë nga Framework-i Symfony dhe është përshtatur në Laravel. [6]

5.1.2 Lidhjet (Routing) në Laravel

Lidhjet në Laravel janë shume të mira, mënyra e implementimit është kogja e ngjashme më atë të Ruby on Rails. Është shumë e thjeshtë të grupohën lidhjet, të krijohen resurse për faqet CRUD dhe automatikisht të bëhet lidhja e modeleve më parametrat e kërkuar.[13]

Më poshtë është ilustruar një lidhje e ndërthurur:

Figura 13: Lidhjet e ndërthurura në Laravel

23

5.1.3 Përdorimi i Elokuent ORM në Laravel

Shembulli i ilustruar më poshtë tregon se si një SQL Query transformohët në një funksion i queries në Elokuent ORM:

Figura 14: Transformimi i një SQL Query në Query funksion në Elokuent ORM [13]

5.1.4 Testimi ne Laravel

Edhe pse krijimi i testimeve ‘Unit’ merr kogja kohë, gjithsesi është mirë të shpenzohet ajo kohë dhe të krijohët, vetë Laravel krijon një klasë bazë ‘TestCase’, krijon një instance të projektit por kur vazhdon dhe shtohët kompleksiteti i projektit duhët vetë të i aktivizojmë ‘filtrat’. Aktivizimi bëhët më komandën “Route::enableFilters()”.

24

Në ilustrimin e më poshtëm mund të shihet se si duket një kod i cili bëne testime:

Figura 15: Ilustrimi i një kodi për testimë në Laravel

25

Figura 16: Një testimë tjeter në Unit-Test (Laravel)

Nëse kemi ndonje rastë se kemi më zhvillu ndonjë Blog, ndonje online shitore e cila mund të jetë e ngarkuar dhe të ketë shumë vizitor, atëher është Laraveli shumë i përshtatshëm. Edhe nëse kemi ndonjë projekt i cili merret më gastronomi apo më mirëmbajtjën e hoteleve është shumë i përshtatshëm. [13]

26

5.2 Pse Zend ?

Zend Framework është një PHP Framework më anë të cilit krijohën aplikacione më shpejtë dhe në mënyra të ndryshme. Të madhësisë më të mëdha por edhe të vogla.[14]

Zend Framework ka disa përparësi që e benë të vlefshëm për të përdorur: • Çdo gjë e ke të gatshëm pas instalimit • Posëdon një dizajn modernë • Është e lehtë për t’u mësuar • Posedon dokumentacion të plotë • Zhvillimi është i thjeshtë • Zhvillimi është i shpejtë

5.2.1 Routing në Zend

Lidhja () standard në Zend është “Zend_Controller_Router_Rewrite”. Routing është procesi i marrjës dhe copëtimit të një URI për të shikuar se cili Modul, cili Kontrolleri dhe çfarë veprimi duhët të bëjë ai Controller. Definicioni i Modulit, i Kontrollerit, veprimit si dhe parametrat e tjerë ruhën në një objekt i cili quhët “Zend_Controller_Dispatcher_Token” i cili përpunohet nga “Zend_Controller_Dispatcher_Standard”. Routingi ndodhë vetëm një herë: kur në fillim merret kërkesa dhe para se të thirret Kontrolleri i parë. [15]

Figura 17: Përdorimi i Routingut në Zend

27

5.2.2 Përdorimi i Doctrine ORM ne Zend

Doctrine është nje projekt më kodin burimor publik i cili është i bazuar në PHP. E cila përpos një shtrese abstraktë e bazës se shënimeve posedon edhe një ORM. Doctrine ndihmon në ndryshimin e një strukturë të bazës së shënimeve në një strukturë të orientuar në objekte. [9]

Figura 18: Krijimi i një tabele përmes Doctrine ORM në Zend

28

Figura 19: Lidhja e bazës së shënimeve në Doctrine ORM – Zend

5.2.3 Testimi në Zend

Një Unit Test stabilë është i domosdoshëm për të zhvilluar një aplikacion të madhë, sidomos nëse janë të përfshirë shumë persona në atë aplikacion. Të shkosh dhe të testosh çdo gjë manualisht bëhet dikur e pa mundur. Unit Test na lehtëson këtë duke e automatizuar testimin e komponentëve dhe duke na lajmëruar nëse ndonjë gje nuk funksionon ashtu siç ka funksionuar në kohën kur është koduar testimi.

Instalimi i Zend-Test është ilustruar më poshtë, komanda e listuar më poshtë e afishon fajllin ‘composer.json’.

Figura 20: Instalimi i Unit-Test në Zend

Në vazhdim e krijojmë një pjesë ku mundemi të bëjmë një test:

Figura 21: Krijimi i një pjesë testuese

29

Testimi i “Album-it” të krijuar më lartë, bëhet si në shembullin më poshtë:

Figura 22: Testimi i "Album" të krijuar më lartë

Gjithashtu duhët të kemi parasysh se nëse sistemi në të cilen jemi duke zhvilluar aplikacionin është “Windows”, testimi duhët të bëhet si në shembullin më poshtë:

Figura 23: Testimi i "Album" në Sistemin Operativ 'Windows'

Rezultati i këtij testimi ish dashtë të na jep një rezultat si më poshtë:

Figura 24: Rezultati i testimit

Testimi i një kontrolleri nuk është kurrë i lehtë por komponenti i Zend-test është shumë lehtë.

30

Fillimisht duhët të krijojmë një kontroller si për shembull “AlbumControllerTest.php” në Follderin “module/Album/test/Controller” më këtë përmbajte:

Figura 25: Krijimi i një kontrolleri

Pastaj nëse e shtojë edhe këtë pjesë të ilustruar më poshtë:

Figura 26: Testimi i Indexit

31

Nëse pastaj e startojë këtë testimë duke përdorur komanden:

Figura 27: Inicializimi i testimit

Duhet të më japë një rezultat si të ilustruar më poshtë:

Figura 28: Rezultati i testimit

Në rastet më të shpeshta Zend Framework është i përshtatshëm për projekte të mëdha dhe të cilat duhet vazhdimisht të menaxhohën si SAAS dhe ERP. Gjithashtu nëse kemi ndonjë rastë se kemi më zhvillu ndonjë Blog, ndonjë shitore online e cila mund të jetë e ngarkuar dhe të këtë shumë vizitor. [17]

32

5.3 Çfarë lloje të bazave të shënimeve përkrahin secili Framework ?

5.3.1 Përkrahja e bazave të shënimeve në Laravel

Pas hulumtimit të bërë e kam parë së Laraveli na lehtëson shumë punën më bazë të shënimeve të cilat i përkrahë, duke përdorur SQL të thjeshtë, fluent query builder dhe Eloquent ORM.

Tani për tani Laravel i përkrah katër bazë të shënimeve: 1. MySQL 5.6+ 2. PostgreSQL 9.4+ 3. SQLite 3.8.8+ 4. SQL Server 2017+

Konfigurimi i bazës se shënimeve tek Laravel gjendët në ‘config/database.php’. Në këtë fajll në duhët të definojmë të gjitha lidhjet më bazën e shënimeve si dhe të definojmë se cila lidhje do të jete ‘lidhja standarde’. [18]

5.3.2 Përkrahja e bazave të shënimeve në Zend

Bazë e shënimeve në Zend (Zend_Db) dhe klasat përcjellëse të saj ofrojnë një mundësi të lehtë për integrimin e SQL në Zend. “Zend_Db_Adapter” është klasa bazë për të lidhur një PHP-aplikacion më RDBMS. Për çdo RDBMS ekziston një adapter.

Adapterat e bazës se shënimeve e mundësojnë një integrim të thjesht më zgjerime specifike të PHP’s. Në ketë mënyre e ndihmon zhvillimin e PHP-aplikacionit më RDBMS të ndryshme më pak mundim. Interfejsat e klasave të adaptereve ngjasojnë shumë më PHP Data Objects.

33

Bazë e shënimeve në Zend ofron klasa të adaptereve për PDO-drajverat të këtyre markave të RDBMS:

• IBM DB2 dhe IDS, përdorin pdo_ibm – zgjërimin • MySQL, përdor pdo_mysql - zgjërimin • Microsoft SQL Server, përdor pdo_dblib - zgjërimin • Oracle, përdor pdo_oci - zgjerimin • PostgreSQL, përdor pdo_pdgsql - zgjërimin • SQLite, përdor pdo_sqlite - zgjërimin

Gjithashtu ofron bazë e shënimeve në Zend klasa të adaptereve për këto firma të RDBMS, të cilat përdorin zgjërime të vetat të PHP’s në bazën e shënimeve:

• MySQL, më mysqli – zgjërimin • Oracle, më oci8 – zgjërimin • IBM DB2 dhe DB2 15, më ibm_db2 – zgjërimin • Firebird(interbase), më php_interbase – zgjërimin

Figura 29: Lidhja e një bazës së shënimeve përmes një adapteri [19]

34

5.4 Struktura

Pasi që shtjellova disa pika të cilat më dukeshin kyçëse për Framework-at më lartë siç janë Laravel dhe Zend, kishte disa elemente në të cilën këto dy Framework-a dallonin. Siç është shpjeguar, Laravel vjen e gatshme më bazën e shënimeve Eloquent ORM ndërsa në Zend përdoreshin adapterat të cilët duhët zhvilluesi vetë ti instaloj. Kishte edhe disa dallime në shkruarjen dhe strukturën se ku dhe si ruhëshin fajllat në Laravel dhe në Zend. Gjithashtu edhe pjesa e lidhjeve apo “Routing” në Laravel ishte më ndryshe sesa në Zend dhe për mendimin tim më lehtë e përdorëshme në Laravel sesa në Zend.

35

6 PËRFUNDIM

Në këtë temë diplome kam tentuar të japë një vlerësim rreth dy framework-ave më të njohura nga PHP. Vlerësimin e këtyre framework-ave e kam bërë në mënyrë të paanshme ashtu vetëm duke vlerësuar se cila më është duk më e përshtatëshme për t’u përdorur për zhvillim.

Rezultatet e krahasimit të këtyre dy framework-ave më shtyëjn të kuptoj se për zhvillimin e një aplikacionit është shumë më e lehtë të fillosh më Laravel pasi që është shumë i përshtatshëm për fillestar, ku Zend kërkon një përvojë dhe aftësi më të madhe në zhvillim. Kjo nuk do të thotë se Zend është më i dobët se Laravel por në ketë aspekt mendojë që Laravel është më i përshtatshëm shkaku që shumë gjëra vijnë bashk më instalimin e Laravel ndërsa në Zend po thuajse për çdo gjë duhët të instalosh vetë.

Ekziston edhe Testimi në Laravel dhe Zend i cili pas shtjellimit është kuptuar se është shumë i rëndësishëm për një aplikacion pavarësisht se më çka zhvillohët.

Bazë e shënimeve në Laravel dhe Zend kishte një dallim thelbësore i cili është se në Laravel bazë e shënimeve gjendët në paketën e Laravelit ndërsa në Zend çdo gjë duhet të instalohet përmes adaptereve të cilat përdorën në Zend. Krijimi i një tabele, shkrimi dhe leximi dallonin ku në Laravel përmes Eloquent ORM është shndërruar nga një lexim normal në një lexim i bazuar në objekte. Po thuajse të njëjtën gjë e bënë edhe Zend.

Sa i perket krahasimit të bazave të shënimeve përpos që në Zend duhet ta instalojmë vetë përmes adapterit dhe në Laravel jo, nuk mendoj se për zhvilluesit do të jetë përdorimi i njërës më shtirë se i tjetrës. Në shembujt më lartë është parë se si bëhet krijimi i lidhjeve më bazën e shënimeve në Laravel dhe në Zend, gjithashtu kisha mundësi të shoh edhe krijimi, mbushja dhe fshirja e tabelave se si bëhet.

36

Ne duhët të kemi parasysh që të këta Frameworka e kanë një gjuhë mjaftë të fuqishme mbrapa tyre e cila është PHP. Sot po thuajse 78% e ueb-faqeve dhe ueb-aplikacioneve janë të ndërtuara në PHP apo përmes Framework-ave të cilat si bazë e kanë PHP-në. Pra përzgjedhja e këtyre framework-ave nuk është e lehtë duke pasur parasysh se nga pas kanë njërën nga gjuhët më të popullarizuara në botë, por nëse Zend që tashmë është shndërruar në ‘Laminas Project’ vazhdon më zhvillimin e këtij framework dhe e bënë më të lehtë përdorimin e tij që më pas mundësi edhe fillestarët më përdor pa shkaktuar shumë probleme dhe nëse e bënë integrimin e disa moduleve apo siç quhën në Zend, disa adaptereve, atëher mund të ketë rritje edhe më të madhe të popullaritetit në Zend. Zend përdoret zakonisht për të bërë aplikacione të mëdha të cilat pastaj janë edhe stabil. Laravel edhe pse si framework është zhvilluar më vonë se Zend ka mbledhur nje popullaritet shumë të madh e cila e bënë edhe kaq të përshtatshëm si framework për arsye se ka shumë suport gjithashtu edhe pasi ka popullaritet, ka edhe shumë zhvilluës të cilët mund të ju përgjigjen në ndonjë pyetje eventuale që mund të keni. Laraveli kryesisht përdoret për projekte si shitore online, Blog etj. Por mund edhe lehtësisht të përdorët për projekte të mëdha të cilat e kanë një bazë të shënimeve të madhe dhe prapë mund të përballoj ky framework duke punuar shpejtë dhe stabil.

Për ta përmbyllur, unë do të kisha sygjeruar që të përzgjidhej Framework Laravel për arsye qe ofron një fleksibilitet mjaftë të madhë dhe mundëson një zhvillim të shpejtë të aplikacionit, po ashtu dokumentimi dhe përkrahja nga komuniteti është i rendësishëm për zhvilluësit pasi që, nëse hasin në probleme në zhvillim atëher kanë mundësi që të zgjidhën më lehtë, kjo nuk do të thotë se Zend është për tu neglizhuar sepse ka edhe kjo përkrahje nga komuniteti, mirëpo më trendin dhe inovacionin që po kalon Laravel dhe përkrahja qe po ju jepët zhvilluesve më mjete të zhvillimit, ateher është një gjë e sigurt që nuk keni bërë përzgjedhjën e gabuar.

37

7 REFERENCAT [1] Die Geschichte von PHP [https://www.php.net/manual/de/history.php.php] , data e çasjes: 05.05.2020. [2] Einführung auf der Serverseite, data e publikimit: 24.07.2019 [https://developer.mozilla.org/de/docs/Learn/Server-side/Erste_Schritte/Introduction], data e çasjes: 06.05.2020 [3] Clien side vs Server side, [https://www.cloudflare.com/learning/serverless/glossary/client-side-vs-server-side/], data e çasjes: 15.05.2020 [4] Was ist PHP?, [https://www.php.net/manual/de/intro-whatis.php], data e çasjes: 18.05.2020 [4] PHP [https://www.checkdomain.de/hosting/lexikon/php/], data e çasjes: 22.05.2020 [5] Was ist ein Framework, data e publikimit 14.05.2018, [https://tipps.computerbild.de/internet/webdesign/was-ist-ein-framework-einfach-erklaert- 518595.html] ,data e çasjes: 23.05.2020 [6] What is a Database? [https://www.oracle.com/database/what-is-database.html], data e çasjes: 24.05.2020 [7] Was sind NoSQL-Datenbanken? [https://aws.amazon.com/de/nosql/], data e çasjes: 25.05.2020 [8] Relationale Datenbanken, data e publikimit: 26.09.2019, [https://www.ionos.de/digitalguide/hosting/hosting-technik/relationale-datenbanken/], data e çasjes: 26.05.2020 [9] Was ist Laravel [https://www.tenmedia.de/de/glossar/laravel], data e çasjes: 26.05.2020 [10] Eloquent ORM [https://laravel.com/docs/5.0/eloquent], data e çasjes: 27.05.2020 [11] Vom Zend Framework zu Laminas, data e publikimit: 01.12.2019, [https://entwickler.de/online/php/zend-framework-zu-laminas-579914479.html], data e çasjes: 28.05.2020 [12] Database and models, [https://framework.zend.com/manual/2.4/en/user- guide/database-and-models.html], data e çasjes: 29.05.2020

38

[13] Why I decided to embrace Laravel, [https://www.toptal.com/laravel/why-i-decided-to- embrace-laravel], data e çasjes: 30.05.2020 [14] Zend Framework [https://livebook.manning.com/book/zend-framework-in-action], data e çasjes: 02.06.2020 [15] Der Standard Router, [https://framework.zend.com/manual/1.11/de/zend.controller.router.html], data e çasjes: 04.06.2020 [16] DDL Abstraction [https://docs.zendframework.com/zend-db/sql-ddl/], data e çasjes: 07.06.2020 [17] a zend-mvc-application, [https://docs.zendframework.com/tutorials/unit- testing/], data e çasjes: 09.06.2020 [18] Basic Database Usage, [https://laravel.com/docs/4.2/database], data e çasjes: 10.06.2020 [19] Zend DB Adapter, [https://framework.zend.com/manual/1.12/de/zend.db.adapter.html], data e çasjes: 12.06.2020

39