49
University for Business and Technology in Kosovo University for Business and Technology in Kosovo UBT Knowledge Center UBT Knowledge Center Theses and Dissertations Student Work Summer 7-2020 Krahasimi i Framework-ave Zend Framework dhe Laravel ne PHP Krahasimi i Framework-ave Zend Framework dhe Laravel ne PHP Gentrit Gruda University for Business and Technology - UBT Follow this and additional works at: https://knowledgecenter.ubt-uni.net/etd Part of the Computer Sciences Commons Recommended Citation Recommended Citation Gruda, Gentrit, "Krahasimi i Framework-ave Zend Framework dhe Laravel ne PHP" (2020). Theses and Dissertations. 1918. https://knowledgecenter.ubt-uni.net/etd/1918 This Thesis is brought to you for free and open access by the Student Work at UBT Knowledge Center. It has been accepted for inclusion in Theses and Dissertations by an authorized administrator of UBT Knowledge Center. For more information, please contact [email protected].

Krahasimi i Framework-ave Zend Framework dhe Laravel ne

Embed Size (px)

Citation preview

University for Business and Technology in Kosovo University for Business and Technology in Kosovo

UBT Knowledge Center UBT Knowledge Center

Theses and Dissertations Student Work

Summer 7-2020

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

Gentrit Gruda University for Business and Technology - UBT

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

Part of the Computer Sciences Commons

Recommended Citation Recommended Citation Gruda, Gentrit, "Krahasimi i Framework-ave Zend Framework dhe Laravel ne PHP" (2020). Theses and Dissertations. 1918. https://knowledgecenter.ubt-uni.net/etd/1918

This Thesis is brought to you for free and open access by the Student Work at UBT Knowledge Center. It has been accepted for inclusion in Theses and Dissertations by an authorized administrator of UBT Knowledge Center. For more information, please contact [email protected].

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

I

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.

II

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.

III

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

IV

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

V

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

VI

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

VII

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

Symfony – 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 Microsoft

Ruby on Rails – Është nje ueb-framework i bazuar në gjuhën programuese Ruby

Sinatra – Është nje ueb-framework i bazuar në gjuhën programuese Ruby

Zend Framework 1 & Zend Framework 2 – Frameworka

Laminas 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

Composer – Ë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

1

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, Rasmus Lerdorf 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 “Source Code”, 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]

2

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.

3

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]

4

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 ‘<?php’ – e cila e hap pjesën e PHP-se dhe ‘?>’ e cila e

mbyllë pjesën e PHP-se.

Gjithashtu mund edhe vetëm të hapët ‘<?php’ – PHP, dhe të mos mbyllet fare, por kjo

funksionon vetëm në ndonjë fajll i cili është i tëri në PHP. PHP dallohet me gjuhët të cilat

përdoren kah ana e klientit, për arsye së PHP ekzekutohët në server dhe po atje gjenerohën

pamjen e HTML, të cilat dërgohen tek klienti. Kjo do të thotë se klienti sheh vetëm

ekzekutimin e skriptit, pa pasur mundësi që të shoh se si duket kodi në të vërtet. Gjithashtu

mund të copëtosh pjesën e HTML dhe pjesën e PHP-se dhe atëher vërtet ka mundësi të mos

shihet as edhe kodi i HTML.[4]

5

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ë Database 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

6

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]

7

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.

8

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:

9

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.

10

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ë.

11

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.

12

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”.

13

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

14

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

15

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ë Linux 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]

16

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”.

17

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]

18

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

19

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.

20

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.

21

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.

22

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]

23

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

24

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()”.

25

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

26

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]

27

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

28

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

29

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

30

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ë.

31

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

32

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]

33

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.

34

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]

35

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.

36

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.

37

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.

38

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

39

[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] Unit Testing 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