Frameworks, MVC princip

Teme vezane za profesionalni razvoj web stranica.
2 post(ov)a • Stranica: 1/1.

Frameworks, MVC princip

PostPostao/la Armin » 06 srp 2014, 14:44

Ovo je tema koju sam trebao davno otvoriti budući da razumijevanje ovoga predstavlja veliki korak pri razvoju ozbiljnijih web aplikacija (da, aplikacija).

Prva stvar koju treba razgraničit je to da Framework nije isto što i CMS. Joomla, Wordpress, Drupal itd. to su CMS (content management sistemi) a ne frameworks.

Evo ukrako neka definicija frameworka koju sam pokupio na netu:

Framework nudi standardna rješenja na tipične probleme, npr. online shop koji može pokriti funkcionalnost korisniče prijave (uključujući manipulisanje sesijama), shoping korpicu, naručivanje, itd.

Velika prednost korištenja framework-a je da:

- ne morate ponovo izmišljati točak, kod već postoji
- kod radi (u većini slučajeva), budući da je već testiran
- manja je vjerovatnoća da ćete imati sigurnosne propuste prilikom logina usera u poređenju sa sistemima koje pravite "od nule"

Nedostaci:

- ako želite da proširite funkcionalnost, morate znati čitati tuđi kod
- ako framework sadrži sigurnosni propust vaša stranica je u ranjiva, a vi nećete imati pojma kako popraviti, tako da morate stalno pratiti obavijesti o nadogradnjama, ispravkama itd.

Stavka koju sam podebljao je u suštini najbitnija. Niko ne želi provesti pola dana il dva dana izmišljajući user login il funkcije za dohvatanje podataka iz baze i pravljenja objekata od istih.

Frameworks s kojima sam imao priliku da radim su CodeIgniter i Yii. Oba poštuju jednak MVC pristup, što nas dovodi do drugog dijela ove teme: šta je pobogu MVC?

MVC (Model - View - Controller) predstavlja standard u razvoju web i desktop aplikacija koji olakšava implementaciju user interface-a.

slika

Kao što ova slika govori:

- view je ono što vidimo
- controller je nešto što prima naše zahtjeve
- model vrši manipulaciju podacima

Posmatrajmo realan primjer. Ulazite na google.ba i kucate "programiranje". Vi time šaljete GET zahtjev na adresu https://www.google.ba/#q=programiranje

Šta se dalje dešava? Google dobija vaš zahtjev, i na neki način vi dobijete za odgovor spisak rezultata ukoliko postoje.

Kada bi vi implementirali google pomoću jednog od navedenih framework-a, vaš CONTROLLER bi bio taj koji čeka zahtjeve i obrađuje ih a zatim korisniku vraća ono što korisnik želi da vidi, tj. VIEW. Šta se dešava između primanja zahtjeva i slanja odgovora korisniku? Google na neki način dohvata podatke u bazi koji se slažu sa zahtjevom korisnika a zatim ih pakuje, ispisuje u VIEW i korisniku šalje isti. Ovdje u igru dolaze modeli. Model nije nešto s čime će korisnik imati ikakvu interakciju. Potpuno je server-side. Olakšava serveru (ujedno i programeru) pristup podacima u bazi (ne nužno u bazi).

Posmatrajmo sljedeći primjer:

Nalazimo se na nekoj social network, i želimo da pogledamo profil nekog korisnika. Mi šaljemo zahtjev npr. na: http://www.nekisocialnetwork.com/?u=mujo.mujic

Controller primjećuje da se radi o GET zahtjevu, pokupi podatke iz istog a zatim koristi model Korisnik da bi pronašao Muju. Korisnik predstavlja neku klasu koja ima polja u skladu sa poljima u bazi podataka,npr.

public $ime; public $prezime; public $username; ...

Model će obično imati neke predefinirane funkcije za pretraživanje podataka u bazi kao npr. find() ili findByAttributes(['niz uslova', ...]). Od modela korisnik se traži da pronađe u bazi korisnika koji ima username mujo.mujic i ukoliko pronađe kontroleru vraća model popunjen sa podacima o traženom useru. Sada u našem modelu imamo podatke ne samo o username-u već sve podatke koji se odnose na traženog usera. Model se dalje prosljeđuje u view, i tu se ispisuju svi pronađeni podaci o korisniku (ili oni koje je programer odredio da se ispisuju), a zatim se taj kompletan view (koji predstavlja ništa drugo nego HTML i CSS u slučaju web aplikacije) vraća (ili na našem return-a) osobi koja je podnijela zahtjev i ta osoba dobija priliku da vidi sve o muji mujicu. Ukoliko mujo.mujic nije pronađen moguce je ispisati odgovarajucu poruku.

Ovo je ukratko princip rada MVC-a. S razlogom sam koristio realne primjere umjesto da smaram s definicijama. Sada očekujem vaše komentare, kritike i pitanja. :)

Armin
"Ne žalim što su drugi pokrali moje ideje. Žalim što nemaju svoje"
Nikola Tesla

Re: Frameworks, MVC princip

PostPostao/la Doki » 07 kol 2014, 00:53

Sto se tice gotovih frameworka istina super su ubrzavaju programiranje,pojacavaju sigurnorst i jako pomazu ako radi vise programera na istom projektu radi standarda tog frameworka ali moje misljenje je da svi frameworksi smanjuju nasu kreativnost i ucenje novih stvari jer su sve funckije vec gotove,takoder ima masa funckija koje vjerojatno necete nikada ni koristiti...

Moje misljenje je da ces najvise nauciti ako sam napises svoj MVC framework za svoje potrebe takoder ako nesto pode po zlu tocno ces znati di da pogledas.

Da zakljucim frameworkovi su stvarno savrsena stvar sto se tice sigurnosti,rada u grupi i brzine pisanja koda ali sa pisanjem vlastitog frameworka nauciti cemo jako puno o samom php u i postati puno bolji programeri nego da pocnemo koristiti neki framework.
Sta vi mislite?


2 post(ov)a • Stranica: 1/1.

Na mreži

Trenutno korisnika/ca: / i 1 gost.