Professional Documents
Culture Documents
15 Izgradnja MVC Modularnog Radnog Okvira PDF
15 Izgradnja MVC Modularnog Radnog Okvira PDF
SAETAK
Cilj je ovoga strunoga rada prikazati tehnologije i komponente vezane uz izradu radnog okvira te prikazati
implementaciju jednostavnog radnog okvira koji sadri najnunije komponente za brzi razvoj web-aplikacija.
Iznesena su teorijska razmatranja vezana uz primjenu radnog okvira u razvoju aplikacije. Predstavljene su i
analizirane potencijalne komponente radnog okvira. Nadalje, prikazana je implementacija radnog okvira uz
koritenje suvremenih tehnologija kao to su PHP, MySQL, HTML itd. Prikazani radni okvir cjelokupno je izgraen
primjenom objektno-orijentiranog pristupa. Koritena je Model-View-Controller arhitektura i alati poput ORM
suelja za automatizirani rad s entitetima i sustavom za upravljanje dogaajima. Prednost koritenja izraenog
radnog okvira je prestanak ulaganja programerova vremena na osmiljavanje arhitekture i izradu alata, ve
e se u potpunosti moi posvetiti zadacima projekta. Iako sadri samo temeljne komponente, radni okvir e
po svojoj modularnoj arhitekturi biti fleksibilan, to e omoguiti programeru da ga proiri prema vlastitim
potrebama i prilagodi prema zahtjevima aplikacije koju je potrebno izraditi. Zakljuak je rada kako je u razvoju
sloenih aplikacija poeljno uloiti vrijeme u izradu radnog okvira ili neke sline komponente koja e kasnije
omoguiti bri i pouzdaniji razvoj cjelokupne aplikacije.
Kljune rijei: radni okvir, Model-View-Controller arhitektura (MVC), programiranje pogonjeno dogaajima,
modularni sustavi , PHP
1. UVOD
Programiranje i razvoj aplikacija postaju sve zahtjevniji zadaci. Razvojem novih tehnologija,
mogunosti i nastajanjem sve kompleksnijih problema, potrebno je uloiti vie vremena
za izradu projekta. Programer ponekad mora razvijati svoja rjeenja na dvije, pa ak i vie
programskih platformi. Jedan od moguih pristupa koji moe olakati i ubrzati razvoj aplikacija
je koritenje radnih okvira (engl. frameworks). To su alati koji odrauju poslove koji mogu biti
vrlo esto repetitivni, trivijalni, ponekad kritini i openito poslovi kojima se programeri ne
bi trebali baviti prilikom rada na projektu jer uzimaju dodatno vrijeme za razvoj. Programeri
na projektu moraju razvijati zadani projekt, a ne probleme arhitekture kda, nedostatka
funkcionalnosti ili sigurnosti4.
1
Mag. edu. E-mail: adrian.1358@gmail.com
2
Dr. sc., docent, Odjel za informatiku, Sveuilite u Rijeci, Radmile Mateji 2, Rijeka, Hrvatska.
E-mail: amestrovic@inf.uniri.hr
3
Datum primitka rada: 27. 2. 2014.; datum prihvaanja rada: 5. 5. 2014.
4
SensioLabs, (2013)., The Book for Symfony 2.3, preuzeto 10. 8. 2013.
215
A. Smijulj, A. Metrovi: Izgradnja MVC modularnog radnog okvira
Zbornik Veleuilita u Rijeci, Vol. 2 (2014), No. 1, pp. 215-232
probleme programer preskae, ime se moe odmah baviti stvarnim problemom, odnosno
poslovnom logikom. Osim navedenog, postoji jo niz prednosti:
sigurnost,
nema cijene (open source),
podrka od strane proizvoaa i zajednice.
Postoje i mane, npr.:
ponekad programer pasivno ui rad u radnom okviru, a ne u jeziku,
ogranienja od strane radnog okvira,
kd radnog okvira je otvorenog tipa, to znai da napredniji programeri mogu znati
kako aplikacija interno funkcionira i mogu iskoristiti slabosti.
Trenutno postoji mnogo dostupnih gotovih radnih okvira, a neki od poznatijih su zasigurno
Symfony, CakePHP, CodeIgniter, ZendFramework, Laravel, Yii (McArthur, 2008). Specifinost
rada s navedenim radnim okvirima jest njihov neidentian rad. Stoga, promjenom radnog
okvira s jednog na drugi, programer mora detaljno prouiti strukturu, konvencije i njegove
specifinosti.
Ukupno gledajui, postoje dobri razlozi za koritenje gotovog radnog okvira. No, izraujui
vlastiti, mogue je u potpunosti prilagoditi kompletnu arhitekturu vlastitim potrebama i
eljama, odnosno dodavati samo ono potrebno za odreeni projekt, te kasnije napraviti
izmjene ili nadogradnje sustava. S druge strane, tijekom izrade ovakvih sustava nije potrebno
apsolutni svaki dio samostalno izraditi jer postoje ve dobra modularna rjeenja, pa e tako za
sustav upravljanja predlocima u radnom okviru biti integriran popularan Smarty Templating
Engine (Hayder, & Gheorghe, 2006), ime e se utedjeti vrijeme potrebno za izradu radnog
okvira.
2.1 ModelViewController arhitektura
MVC je kdna arhitektura koja je, iako originalno razvijana za desktop platforme, danas
popularna na suvremenim web-platformama. Glavne ideje ovoga modela su razdvajanje kda
u zasebne cjeline, odnosno dosljedna struktura i mogunost ponovnog koritenja istog kda
(engl. code reusability). Sama ideja je prvi put javno prezentirana ve 1988. godine (Krasner,
Pope, 1988), a do dananjeg dana doivjela je nekoliko iteracija pa je stvoreno nekoliko inaica
originalne ideje (HMVC, MVA, MVP, MVVM, itd.).
MVC arhitektura sastoji se od odreenih komponenti u kojima je svaka zaduena za obavljanje
specifinih funkcija. To je puno bolje u odnosu na prethodne inaice u kojima se sve nalazilo
na jednom mjestu, a to je pak dovodilo do oteanog itanja kda, oteanog pronalaenja i
ispravljanja pogreaka, ali i do znatno manje funkcionalnosti i fleksibilnosti.
Cijela arhitektura se sastoji od triju specifinih i meusobno zavisnih komponenti: model, view
(pogled, prezentacija) i controller (kontroler, upravlja). Na slici 1 prikazan je openit princip
rada MVC arhitekture u web-okruenju:
217
A. Smijulj, A. Metrovi: Izgradnja MVC modularnog radnog okvira
Zbornik Veleuilita u Rijeci, Vol. 2 (2014), No. 1, pp. 215-232
Cijeli proces zapoinje korisnikovim zahtjevom (u trenutku kada korisnik unese web-adresu
u svom pregledniku) kojeg najprije analizira kontroler, a koji sadrava skup prethodno
definiranih slijedova operacija, odnosno funkcija koje je potrebno izvriti. U tom procesu vri
se i komunikacija s preostale dvije komponente modelom i prezentacijom, tako da potrebne
parametre prosljeuje svakoj komponenti te, ovisno o rezultatu, kontrolira daljnji slijed
izvravanja cjelokupnog procesa. Uloga modela je rad s podacima, odnosno komunikacija s
bazom podataka, dodatna obrada dobivenih podataka, ukoliko je potrebno, te u konanici
vraanje rezultata prema kontroleru. Dobiveni podaci e, po potrebi, biti poslani drugim
procesima i biti opet naknadno obraivani. Ipak, u veini sluajeva kontroler e zavriti proces
pozivajui prezentacijsku komponentu, koja e pak generirati zadani predloak po kojemu e
se dobiveni podaci i prezentirati. Tako dobiveni predloak, odnosno generirani HTML kd,
kontroler e poslati prema korisniku, odnosno korisnikovom pregledniku.
MVC arhitektura se neko vrijeme razvija unapreivanjem prethodnih verzija pa je razvijeno vie
razliitih verzija MVC arhitekture. Arhitekture su uglavnom sline, s manjim razlikama u logici
odvijanja procesa i nazivlju komponenata. Jedna verzija MVC arhitekture je MVA, odnosno Model-
View-Adapter i zanimljivo je da se danas sve vie koristi u kontekstu web-tehnologija, naroito na
klijentskoj strani aplikacije (npr. u skriptnom jeziku JavaScript). U ovom konceptu postoji posebna
komponenta adapter koja se nalazi izmeu komponenti model i prezentacija i ona regulira procese
tako to prati rad i procese temeljem odgovora koje dobiva od okolnih susjednih komponenti.
Npr. prezentacijska komponenta alje signal da je u tekstualno polje u formularu upisano ime,
adapter prima tu informaciju i tada alje zahtjev modelu za auriranjem podataka koji e se kasnije
koristiti za spremanje, npr. u bazu podataka. Obrnuti proces je takoer mogu, ukoliko se podaci
u modelu promijene, model komponenta e poslati signal adapteru koji e na isti nain reagirati
prema prezentacijskooj komponenti, odnosno sadraj formulara e se takoer aurirati. Danas se
primjena ovakvog nain rada moe vidjeti npr. u JavaScript radnim okvirima kao to su Backbone.js,
Angular.js, Kendo UI (Adams, 2013) itd., a koji omoguuju izvravanje MVC arhitekture djelomino
na klijentskoj strani, za razliku od klasinog pristupa u kojem se arhitektura primjenjivala samo na
posluitelju.
218
A. Smijulj, A. Metrovi: Izgradnja MVC modularnog radnog okvira
Zbornik Veleuilita u Rijeci, Vol. 2 (2014), No. 1, pp. 215-232
Slian princip koristi i three-tier-pattern arhitekura (Eckerson, 1995), u kojoj se kao i u MVC
arhitekturi, cjelina nastoji razdvojiti u tri razine, a to su prezentacijska, logika i podatkovna
razina. Zanimljivo je da se ove razine izvravaju na razliitim platformama, pa se tako
prezentacijska razina moe nalaziti u desktop aplikaciji u obliku korisnikog suelja, dok se
logika i podatkovna razina mogu nalaziti na razliitim posluiteljima u izoliranoj okolini. Iz
ovoga nastaje, takoer interesantna, prednost: razine ne ovise meusobno, i to u smislu da je
na razliitim razinama mogue kompletno zamijeniti okruenje (npr. u prezentacijskoj razini
izmijeniti operativni sustav ili aplikaciju) i sve dok specifine razine odrauju svoju funkciju,
cijela arhitektura e ispravno funkcionirati. U odnosu na MVC arhitekturu, osim ove razlike,
ovdje takoer ne postoji mogunost komunikacije prve i zadnje razine, ve cijeli proces uvijek
zapoinje prezentacijskom, a zavrava podatkovnom razinom, to u odreenim situacijama
moe biti i mana.
2.2 Modularno programiranje
Modularno programiranje je tehnika dizajniranja softvera koja naglaava razdvajanje kda
u neovisne cjeline koje se u svakom trenutku mogu ukljuiti ili iskljuiti i to bez utjecaja
na ostatak sustava (ribar, Motik, 2010; Matkovi, 2006). Ovo se znatno razlikuje od tzv.
monolitinih aplikacija u kojima je i najmanji dio kda zapravo neizostavni dio cjeline, to
je gotovo uvijek nepoeljan faktor u procesu izrade softvera. Uobiajeni primjeri modularnih
sustava su integrirani informacijski sustavi za podrku poslovanju (ERP sustavi, engl. Enterprise
Resource Planning Sastems) ili sustavi za elektroniko poslovanje koji se mogu sastojati takoer
od vie modula. Primjer modularnog sustava za elektroniko poslovanje prikazan je na slici 2.
U navedenim primjerima vidimo kako se kompleksni sustavi mogu sastojati od svojih manjih
zasebnih cjelina. Tako npr. ERP sustav moe sadravati modul za upravljanje odnosima s korisnicima
(engl. Customer Relationship Management, CRM), ali i ne mora, ukoliko za to ne postoji zahtjev, dok
e sustav i dalje funkcionirati uredno. S druge strane, sustav za elektroniko poslovanje moe, ali i
ne mora, sadravati modul za izradu popusta na cijenu proizvoda.
Bitno je napomenuti kako moduli kao takvi ne komuniciraju meusobno u sustavu, osim u smislu
koritenja drugog modula kako bi prvi mogao ispuniti svoju namjenu (npr. modul koji bi mogao
sluiti za ispisivanje izvjea moe funkcionirati jedino ako prethodno u sustavu postoji i modul
koji kreira izvjea).
219
A. Smijulj, A. Metrovi: Izgradnja MVC modularnog radnog okvira
Zbornik Veleuilita u Rijeci, Vol. 2 (2014), No. 1, pp. 215-232
Osim to omoguuje bolju strukturiranost i neovisnost kda, ova tehnika ima jo neke prednosti:
kd je smjeten u razliitim datotekama koje se kasnije ukljuuju u cjelinu,
u isto vrijeme nekoliko programera moe raditi na razliitim dijelovima sustava,
osnovu sustava je lake odravati (popravci i unaprijeivanje kda) uteda na
vremenu a time i novcu,
kod isporuke proizvoda, mogue je definirati ukupnu cijenu na temelju modula koji su
ukljueni u paketu.
2.3 ORM suelje
Openito, pri kreiranju programskih aplikacija, programer e se gotovo uvijek susresti s razliitim
postupcima manipuliranja podacima, odnosno bazom podataka. Kod takvih operacija, programer
pie razliite upite nad bazom podataka (SQL upiti) i time kreira, ita, mijenja ili brie postojee
podatke. No, upiti esto mogu biti slini ili ak isti za razliite dijelove aplikacije. U praksi kd se
kopira, a u konanici ga je i vrlo teko odravati jer se promjene ne izvode samo na jednom mjestu,
nego na cijelom sustavu (automatski postoji mogunost pogreke u kdu na svakoj kopiji).
Object relational mapping je nain organizacije kda odgovornog za izvravanje upita prema bazi
podataka. To je tehnika kojom je omoguena komunikacija i konverzija podataka izmeu dva
zapravo nekompatibilna sustava objektno orijentiranog jezika i baze podataka. Konkretnije, ova
tehnika omoguuje programerima da u kdu gotovo u cijelosti iskljue pisanje SQL upita jer to
za njih odrauje ORM suelje, dok se njihov kd svodi na rad s objektima. Na slici 3 je generalno
prikazan nain rada ORM suelja.
Slika 3. Uloga i nain rada ORM suelja
Izvor: https://code.google.com/p/quickdb/
U praksi, koritenjem ORM-a, programer radi s objektima razliitih klasa koje predstavljaju
neke tipove entiteta koji imaju implementirane razliite metode za rad s bazom podataka (npr.
razliite metode za itanje ili spremanje podataka). Sama logika je enkapsulirana i ona se brine o
220
A. Smijulj, A. Metrovi: Izgradnja MVC modularnog radnog okvira
Zbornik Veleuilita u Rijeci, Vol. 2 (2014), No. 1, pp. 215-232
tonom izvoenju SQL upita umjesto programera. Moemo rei da ORM zapravo stvara virtualnu
reprezentaciju objektne baze podataka, jer u kdu zapravo virtualno spremamo objekt u bazu,
odnosno itamo ili dohvaamo objekt iz baze. No, to u stvarnosti nije tako (za razliku od objektnih
baza podataka), jer se u konanici podaci zapisuju u obliku retka u tablici u bazi podataka. Danas
postoje ve nekoliko gotovih ORM rjeenja (gotovo da se mogu i nazvati radni okviri zbog svoje
kompleksnosti i mogunosti), kao npr. Doctrine Project5, Active Record6 itd., a nerijetko se piu
i razna manja rjeenja zbog bolje prilagodbe postojeoj strukturi podataka. Neka od rjeenja
nude i mogunost rada s razliitim platformama kao to su MySQL, PostgreSQL, SQLite, itd. U
sljedeem primjeru kda prikazan je primjer rada s poznatim ORM sueljem Doctrine Project.
1 // Primjer pretraivanje lanaka
2 $article = $entityManager->find(CMS\Article, 1234);
3 $article->setHeadline(Hello World!);
4 $article2 = $entityManager->find(CMS\Article, 1234);
5 echo $article2->getHeadline();
6 // Svi korisnici koji imaju 20 godina i prezivaju se Miller
7 $users = $em->getRepository(MyProject\Domain\User)->findBy(array(age => 20, surname => Miller));
Velika prednost koritenja ove tehnike oituje se u tome to programeri ne moraju pisati SQL
upite, a osim toga, kd izgleda preglednije jer se sve svodi na rad s objektima te pozivanje njihovih
metoda. Meutim, vrlo je teko kreirati ORM suelje koje moe pokriti sve nae zahtjeve. Drugim
rijeima, kompleksniji SQL upiti se moraju i dalje runo pisati. Uz ovo, pokazalo se da programeri
ponekad nesvjesno kreiraju loe dizajnirane tablice jer ih automatski prilagoavaju ORM suelju
koje koriste.
U izgradnji radnog okvira bit e implementirano i ORM suelje. Pri razvoju ove komponente,
nastojalo se to vie pojednostaviti upotrebu, ime e se poveati produktivnost programera i
smanjiti ukupna koliina potrebnog kda.
2.4 Izrada MVC arhitekture
U ovome poglavlju e biti prikazana izrada MVC arhitekture radnog okvira u skriptnom jeziku PHP,
koja ini osnovu modularnog radnog okvira. Na slici 4 dan je prikaz UML dijagram7 s kojim e se
moi zornije prikazati cjelokupna struktura radnog okvira.
Radni okvir sastojat e se od nekoliko temeljnih klasa koje e sadravati sve to je potrebno
kako bi se sustav pravilno inicijalizirao, to e se izvoditi na svakom zahtjevu klijenta prema
odreenoj aplikaciji na posluitelju. Sve zapoinje s klasom Application, izvravanjem metoda
kao to init() ili getModuleConfig(), nakon ega e se na kraju instancirati jedan objekt klase
Controller. Ovdje e se vrlo esto instancirati razliiti objekti klase Entity, koja zbog dodatnih
potrebnih metoda proiruje klasu Model, koja pak, u konanici, proiruje klasu DB_Resource
i koristi klasu DB, to omoguuje rad s bazom podataka. Jedino je u ponekim sluajevima
mogue izravno koritenje klase DB_Resource, i to kada se eli zaobii klasa Entity, odnosno
5
http://www.doctrine-project.org/, preuzeto 10. 8. 2013.
6
http://www.phpactiverecord.org/, preuzeto 10. 8. 2013.
7
UML dijagram - Ujedinjeni jezik za modeliranje (eng. Unified Modelling Language, krae: UML) je normirani jezik
ope namjene koji se koristi za modeliranje raunalnih sustava temeljenih na objektno-orijentiranoj paradigmi.
221
A. Smijulj, A. Metrovi: Izgradnja MVC modularnog radnog okvira
Zbornik Veleuilita u Rijeci, Vol. 2 (2014), No. 1, pp. 215-232
kada ona, zbog okolnih faktora, programeru jednostavno nije potrebna. Iza ovog dijela
nalazi se klasa View koja e takoer instancirati objekt klase Smarty. On e nam koristiti za
generiranje HTML sadraja, a koji e se u konanici prikazati krajnjem korisniku.
Klase, atributi i metode su razvrstane logiki prema svojoj namjeni. Struktura nije strogo
definirana, stoga ju je mogue, prema eventualnim potreba klase, dodatno proiriti vlastitim
metodama ili umetnuti dodatnu klasu izmeu nekih postojeih, ukoliko je to potrebno.
Radni okvir e biti modularan, to znai da e podravati proizvoljno ukljuivanje i iskljuivanje
modula iz sustava. Nadalje, svaki modul koji e se pisati radit e prema MVC ahitekturi -
drugim rijeima, svaki modul e imati svoje kontrolere (moe ih biti i vie, ovisno o potrebi) te
e sustav, prema definiranom algoritmu, prepoznati u kojem se modulu, kontroleru i akciji radi
i to iz HTTP zahtjeva korisnika, odnosno pomou upisane adrese. Za ovo e biti odgovoran
usmjeriva, tzv. ruter i njegovo procesiranje e se u pravilu uvijek izvravati prije bilo kojeg
kontrolera (ponekad se ovaj kontroler naziva i prednji kontroler).
Slika 4. UML dijagram radnog okvira
Iako su u dosadanjim primjerima akcije vraale rezultat, odnosno generirani HTML (engl. output),
to ne mora biti uvijek tako. Npr., akcije ponekad mogu samo odraditi spremanje ili brisanje
podataka u bazi, vriti preusmjeravanje itd.
Kontroleri i njihove akcije se zapravo logiki grupiraju u cjeline, pa tako moe postojati sljedea
podjela tri modula i klase kontrolera koje sadre tipine akcije (slika 6):
Slika 6. Jednostavni primjeri kontrolera
U prvom sluaju definiran je kontroler Stranice istoimenog modula, koji je odgovoran za prikaz
statikih stranica. Prve tri akcije pocetna(), onama() i kontakt() mogu posluiti za dohvaanje
predloka u kojima se nalaze potrebne informacije, dok etvrta metoda moe spremati podatke
iz formulara koji je korisnik dobio prethodno ispunjavajui formular dobiven pomou akcije
kontakt(). Organizacija je slina i u druga dva kontrolera, definirane su akcije koje e vraati
formulare za unos podataka (npr. dodavanje() i prijava()) i akcije koje e procesuirati podatke
(npr. spremanje(), odjava()).
223
A. Smijulj, A. Metrovi: Izgradnja MVC modularnog radnog okvira
Zbornik Veleuilita u Rijeci, Vol. 2 (2014), No. 1, pp. 215-232
224
A. Smijulj, A. Metrovi: Izgradnja MVC modularnog radnog okvira
Zbornik Veleuilita u Rijeci, Vol. 2 (2014), No. 1, pp. 215-232
Osim velike fleksibilnosti koju ovaj kocenpt prua, postoji i jo nekoliko prednosti kao to su:
strukturiranost i kontrola (razdvojen kd),
omoguava izradu boljih suelja,
kompleksnije kdne strukture i vee mogunosti (neovisan kd).
Pored opisane primjene, slian koncept se primjenjuje i u objektno-orijentiranom kontekstu, a koji
e detaljnije biti analizirati u sljedeem odlomku.
2.5.1 Klase za praenje stanja objekta
U uvodnom dijelu ovog poglavlja, u kojem su prikazani kljuni elementi programiranja pogonjenog
dogaajima, govorilo se uglavnom o primjeni koncepta pri izradi suelja i definiranju interakcije
s korisnikom. U nastavku slijedi malo drugaija implementacija pristupa koji ima elemente
programiranja pogonjenog dogaajima te neke vlastite specifine zahtjeve i karakteristike, a sluit
e za praenje stanja objekata te izvoenju adekvatnih callback funkcija.
Cilj izrade klasa za praenje stanja objekta (klasa Observer) je takoer postojanje veza izmeu
elemenata u zajednikom okruenju koje e omoguiti praenje njihova stanja, no, konkretno, ovog
puta navedeni elementi su zapravo objekti. Npr., za promjenu stanja jednog objekta, ostali ovisni
objekti e moi saznati za tu promjenu te reagirati po potrebi. Fleksibilnost, definirana na ovaj nain,
moe omoguiti bolju kontrolu objekata te olakati dodavanje novih funkcionalnosti u postojei kd.
Tok ovog koncepta je vrlo jednostavan, a sastoji se od etiri elementa (ovoga puta koristit emo
englesku terminologiju radi lakeg razumijevanja):
1. Klasa Observable (pratljiva klasa) je zapravo apstraktna klasa ili suelje, koje e svaki
konkretni objekt morati implementirati, a sadravat e potrebne metode za rad s centralnom
klasom Observer (prikljuenje ili iskljuenje Observera, praenje stanja ostalih objekata itd.).
2. Klasa ConcreteObservable (konkretna klasa) koja implementira navedeno suelje, a
predstavlja objekt koji moe mijenjati stanja, pri kojima e doi do obavjetavanja
ostalih objekata klase ConcreteObservable.
3. Klasa Observer (promatra), takoer apstraktna klasa ili suelje, koje mora
implementirati konkretna klasa Observer.
4. Klasa ConcreteObserver konkretna Observer klasa po kojoj e se instancirati svi
Observer objekti, prati i obavjetava objekte o promjenama stanja.
225
A. Smijulj, A. Metrovi: Izgradnja MVC modularnog radnog okvira
Zbornik Veleuilita u Rijeci, Vol. 2 (2014), No. 1, pp. 215-232
226
A. Smijulj, A. Metrovi: Izgradnja MVC modularnog radnog okvira
Zbornik Veleuilita u Rijeci, Vol. 2 (2014), No. 1, pp. 215-232
1 <events>
2 <event>
3 <type>beforeController</type>
4 <callback>Pages|updatePageStats</callback>
5 </event>
6 <event>
7 <type>afterController</type>
8 <callback>Pages|test</callback>
9 </event>
10 </events>
Navedenim SQL kdom kreirat e se tablica u bazi po imenu user i to s gore navedenim
stupcima, od kojih e svaki sadravati konkretan podatak osim usergroup_id, koji predstavlja
vanjski klju korisnike grupe za koju e korisnik biti vezan. Vanjski kljuevi, kao to je i navedeno
u prethodnim poglavljima, moraju sadravati sufiks _id zbog ORM suelja koje e pri uitavanju
podataka prepoznati da se ovdje radi o drugom entitetu, odnosno o korisnikoj grupi. Nakon
ovoga, potrebna je i, naravno, tablica korisnikih grupa koja je prikazana u narednom odsjeku
kda. Ovdje postoji prostor za dodavanje jo nekih podataka, no zbog ovog primjera nastojalo
se maksimalno pojednostaviti strukturu. Nakon pripreme entiteta i baze podataka, slijedi izrada
kontrolera koji e upravljati aplikacijom.
228
A. Smijulj, A. Metrovi: Izgradnja MVC modularnog radnog okvira
Zbornik Veleuilita u Rijeci, Vol. 2 (2014), No. 1, pp. 215-232
1 CREATETABLE`usergroup`(
2 `id`INT(10)NOTNULLAUTO_INCREMENT,
3 `name`VARCHAR(50)NULLDEFAULTCOLLATEutf8_bin,
4 PRIMARYKEY(`id`)
5 )
6 COLLATE=utf8_bin
7 ENGINE=InnoDB
229
A. Smijulj, A. Metrovi: Izgradnja MVC modularnog radnog okvira
Zbornik Veleuilita u Rijeci, Vol. 2 (2014), No. 1, pp. 215-232
Navedena funkcija e samo instancirati objekt klase Page_Stats te na njemu pozvati metodu
updatePageStats(), a kao parametar proslijediti naziv trenutne akcije. Navedena metoda zapravo
samo izvrava SQL upit koji e aurirati statistiku tako to e za trenutnu stranicu, ukoliko nije
upisana u tablici, u tablici page_stats kreirati redak s poetnom vrijednosti statistike koja iznosi 1.
Ukoliko doe do ponovnog uitavanja iste stranice, u tablici se nee ponovno kreirati isti redak za
trenutnu stranicu, ve e se isti poveati za 1, to je postignuto s ON DUPLICATE KEY UPDATE
komandom (pri upitu na MySQL).
Ovo je bio jednostavan primjer na kojem moemo iskoristiti ugraeni mehanizam pogonjen
dogaajima u naem radnom okviru. Osim to imamo veliku fleksibilnost, ovom metodom
omoguili smo suradnju razliitih dijelova sustava te istovremeno njihovu potpunu neovisnost.
Gore navedena funkcija se, naravno, moe proiriti, a programer ima i mogunosti dodavati
funkcije za svaku situaciju u kojoj je potrebno koristiti callback funkciju. Neki od primjera dogaaja
na koje moemo registrirati funkcije su uspjena autorizacija korisnika, kreiranje stranice, kreiranje
ili brisanje korisnika, upload datoteke, itd.
4. ZAKLJUAK
Zbog sve sloenijih i zahtjevnih aplikacija, programeri moraju traiti sve bolja sredstva rada.
Repetitivne radnje se moraju svesti na minimum. U prvom planu mora biti razvoj same aplikacije,
a ne rjeavanje problema programskog jezika (ili ponekad ak radnog okvira) koji je u uporabi.
230
A. Smijulj, A. Metrovi: Izgradnja MVC modularnog radnog okvira
Zbornik Veleuilita u Rijeci, Vol. 2 (2014), No. 1, pp. 215-232
Ovim radom nastojalo se barem djelomino prikazati to se moe postii pisanjem vlastitog
radnog okvira. Na temelju vlastitog iskustva s drugim radnim okvirima i tehnologijama, nastojalo
se uiniti programiranje to prirodnijim i jednostavnijim procesom, to je vrlo esto problem u
drugim razvojnim okruenjima. esto koritenje klasa neintuitivnih imena, ponekad nejasne logike
i strukture, te sama teina radnog okvira, odnosno njegova dodatna procesiranja, mogu uiniti
cijeli radni okvir manje efikasnim i nezgodnim za koritenje.
Iako je za potpunu funkcionalnost potrebno osmisliti vei broj komponenata, najvaniji je,
zapravo, pravilan rad cijeloga sustava kao cjeline te omoguavanje lakog pristupa programeru
komponentama sustava. Osim to programer ovime dobiva skup alata koji e mu omoguiti bri i
efikasniji rad, radni okvir svojim ugraenim konvencijama e takoer forsirati skladnu i dosljednu
strukturu, to e pasivno omoguiti organiziranije pisanje kda te dodavanje dodatnih komponenti
po potrebi.
Radni okvir koji je ovdje izraen ipak predstavlja samo temeljne i najnunije alate, zbog ega bi bilo
zgodno uvesti jo neke dodatne komponente, kao to su sustav za autorizaciju i autentifikaciju
korisnika, integracija dodatnih cache mehanizama, mogunost koritenja kratkih ruta, izrada
CMS rjeenja, komponenti za viejezine aplikacije, slanje elektronike pote, itd. No, s jasnom
strukturom i pravilima, ovaj posao bi se trebao olakati, a s podranom modularnom strukturom,
pisanje posebnih modula specifinih za pojedini projekt mogue je ponovno iskoristiti i, po potrebi,
prilagoditi na drugim aplikacijama.
Nakon izrade navedenih komponenti, slijedi odravanje radnog okvira, s obzirom da nove
tehnologije konstantno donose nove mogunosti. Zbog velike koliina posla u ovome segmentu,
ipak bi bilo poeljno okupiti tim programera koji bi zajedno mogli suraivati i doprinositi radnom
okviru. Na ovaj nain, budui posao razvoja aplikacija bit e jo bri, a samim time i produktivniji.
LITERATURA
Adams, J. (2013) Learning Kendo UI Web Development, Packt Publishing Ltd.
Ahsanul B., Anupom S., (2008) Cake PHP Application Development, Birmingham: Packg Publishing Ltd.
Eckerson, W. W. (1995) Three tier client/server architectures: achieving scalability, performance, and efficiency in client/
server applications, Open Information Systems, 3(20), p. 46-50
Fowler P. et al. (2002) Patterns of Enterprise Application Architecture, Addison Wesley
Hayder, H., Gheorghe, L. (2006) Smarty PHP Template Programming And Applications. Packt Publishing Ltd.
Krasner, G. E.; Pope, S. T. (1988) A cookbook for using the modelview controller user interface paradigm in Smalltalk-80.
Journal of Object-Oriented Programming, 1(3) p. 26-49
Matkovi S. et al. (2006) Osnove programiranja u okruenju grafikih operativnih sistema: Programski jezik C#, Beograd:
RG i CET
McArthur, K. (2008) Pro PHP: Patterns, Frameworks, Testing and More. Apress.
Sarode, P. (2001) Writing a reusable implementation of the MVC design pattern, JAVA REPORT, Volume: 6, Issue: 7
SensioLabs, (2013) The Book for Symfony 2.3 (10. 8. 2013.)
ribar J., Motik B. (2010) Demistificirani C++, Zagreb: Element
231
A. Smijulj, A. Metrovi: Izgradnja MVC modularnog radnog okvira
Zbornik Veleuilita u Rijeci, Vol. 2 (2014), No. 1, pp. 215-232
ABSTRACT
The objective of this paper was to provide an overview of the existing technologies and components related
to framework creation and to show implementation of a simple framework that contains the most essential
components for rapid development of web applications. In the first part of the paper, the theoretical considerations
related to the implementation of the framework in developing applications are presented. Potential components
of the framework are presented and analyzed on the theoretical level. The second part shows the implementation
of the framework using modern technologies like PHP, MySQL, HTML etc. The presented framework is built using
the object-oriented approach. The MVC architecture and ORM tools such as automated interface are used to
work with the entities and for event management system. The advantage of the presented approach is that the
programmer will not have to invest time in architecture design and tool development any more, but will be fully
able to focus on project tasks. Although it contains only the core components, the framework will be flexible
thanks to its modular architecture, allowing the developer to extend it to suit ones specific needs and to adapt
it to the requirements of the application to be developed. To conclude, while developing complex applications it
is advisable to invest time in making a framework or similar component that will later enable faster and more
reliable development of the application.
Key words: model-view-controller architecture (MVC), framework, event driven programming, modular
systems, PHP
1
B. Ed. E-mail: adrian.1358@gmail.com
2
PhD, Assistant professor, Department of informatics University of Rijeka, Radmile Mateji 2, Rijeka, Croatia.
E-mail: amestrovic@inf.uniri.hr
3
Received: 27. 2. 2014.; accepted: 5. 5. 2014.
232