[ NetworkAdmin @ 02.03.2004. 17:59 ] @
Zdravo, vec duze vrijeme koristim smarty php class za renderiranje svojih templates i jako sam odusevljen sa njom tako da je koristim apsolutno na svim web aplikacija koje radim.

Sad naravno kako je odvojena prezentacija od aplikacije doslo je na red arhitektura same aplikacije i to zelim da dovedem na neki malo sofisticiraniji nivo. Prvo sam naletio nesto malo na clanke o MVC (Model-View-Controller) pristupu.

Svima big toplo preporucio da procitaju sljedeci clanak:

https://www.phparch.com/issuedata/2003/jun/sample.php koji je postavljen na free download i prilozeni kod.

Inace "homepage" smarty-ja je http://smarty.php.net a Phrame http://phrame.sourceforge.net/

Evo sada radim jedan projekt koristeci smarty phrame i mysql kao bazu i mogu vam reci da sam do sada mnoge stvari intuitivno i sam radio na neki nacin ranije ali phrame te tako dobro vodi i olaksava zivot da mislim da se sigurno necu pokajati sto sam proveo izvjesno vrijeme uceci i adaptirajuci svoje navike.

Ako je neko radio sa slicnim kodom na MVC framework bilo bi mi interesantno cuti prijedloge.
[ broker @ 02.03.2004. 21:53 ] @
Pogledao sam na brzinu i cini mi se ok resenje. Naravno za primenu treba dosta toga uraditi ali je kao osnova vrlo ok resenje.

Radi se o klasicnom uopstavanju problema koje je kvalitet svakog dobro izvedenog programskog projekta. Sto je vise toga uopsteno, lakse ga je primeniti u razlicitim situacijama.

Tesko je preporuciti nesto slicno. Ono sto sam javidjao je uglavnom na visokom nivou i obicno sadzi neka specificna resenja koja u neku ruku i ogranicavaju razvoj. To je cena zaokruenog proizvoda, negde mora da sepovuce crta i da se prestane sa uopstavanjem da bi imao konkretnu pimenu.
[ NetworkAdmin @ 03.03.2004. 07:42 ] @
Da bas sam citao negdje na mailing listi smartijevoj da covjek koji prakticno razvija smarty je napisao da je pomisljao da napravi nesto sto govorimo ovdje "totalno uopstenje" ali je zakljucio isto sto i ti... negdje se mora povuci crta. Specijalizovani kodovi mozda ne izgledaju tako lijepi kao neki opsti ali zato su brzi...
[ leka @ 03.03.2004. 09:26 ] @
Ja bih samo dodao nesto - MVC NIJE FRAMEWORK. To je zapravo nesto sto se
zove "design pattern" i nema veze samo sa PHP-om. Implementacije MVC
"pattern"-a ces naci i u .NET-u, JAVI, raznim C++ toolkit-ima, itd.
[ NetworkAdmin @ 03.03.2004. 10:08 ] @
OK leka.. ako cemo posteno sun je to izmislio evo dobar clanak:

http://java.sun.com/blueprints...ons_2e/web-tier/web-tier5.html

a phrame nije losa implementacija za PHP... naravno MVC je stil zivota a ne framework
[ broker @ 03.03.2004. 12:52 ] @
Citat:
NetworkAdmin:
Da bas sam citao negdje na mailing listi smartijevoj da covjek koji prakticno razvija smarty je napisao da je pomisljao da napravi nesto sto govorimo ovdje "totalno uopstenje" ali je zakljucio isto sto i ti... negdje se mora povuci crta. Specijalizovani kodovi mozda ne izgledaju tako lijepi kao neki opsti ali zato su brzi...


Naravno, prva star je brzina, ali takodje i lakoca korsicenja je bitna. Uopsteni metod zahteva mnogo parametara a podaci umeju da budu zaguljeno zatpani iza nekih komplikovanih mehanizama.

Kad smo kod toga evo jednog slucaja nakome trenutno radim.

Stvar je u uobicajenoj bazi sa podacima o korisnicima i njihovom koriscenju iz vise modula. Za razne primene, potrebni su razlicti podaci o korisnicima i treba smisliti mehanizam koji omogucava a svaki modul koji iz nekog razloga treba da korsiti podatke o korisnicima ili cak uvodi neke svoje to moze da uradi jednostavno.

Reseje kome se cest pribegava, da se naprvi tabela parametara koja omogucava da se podaicma pristupa preko kljuceva je prilicno opste i zaista moze da pokrije gomilu raznih podataka cak i bez promene u strukturi baze podataka. Pojednotavljeno, svodi e na uvodjenen tabele parametara koja ima strukturu ID_MODULA, ID_PARAMETRA, VREDNOST pa se sa malim skupom funkcija parameri mogu definisati, upisivati i citati. Komplikacija je sto parameri mogu biti raznih tipova pa to treba da bude podrzano. Ono sto je poseban prolemje sto se ovako definisanim parametrima, ne moze pristupiti jednim jenostavnim SELECT-om nego mora da se petlja.

Resenje o kome razmisljam je drugacije. SVaki modul ima sopstvenu tabelu korsinika u koju upisuje podatke onako kako njemu odgovara. Tabele korisnika svih modula su medjusobno povezane po kljucnom polju (ID-KORISNIKA) u relaciji 1 - 1. Podaci se citaju JOIN-ovanjem tabela korisnika iz potrebnih modula.

NA primer, apliakciaj moze da ima tabele:

AUTH_KORISNICI, sa kljucnim polje ID_KORISNIKA i dodatnim poljima potrebnim za utentifikaciju (korsinicko ime, lozinka, vreme kreiraja, vreme poslednje posete, ip sa kojeg je bila poslednja poseta i slicno)

PROFIL_KORISNICI, sa kljucnim poljem ID_KORISNIKA i dodatnim poljima vezanim za profil (ime i prezime, datum rodjenja, adresa, telefon i svi ostali podaci koji su potrebni).

Podaci o korisniku se dobijaju po potrebi JOIN-ovanjem slogova ove dve tabele. Tabele se nezavisne i svaki modul moze da im definise strukturu po sopstvenoj potrebi ne uticuci na ostale module.

Sad recimo da u apliakciju treba uvesti modul za forum. I njemu su potrebni specificni podaci o korisnicima. taj modul kreira svoju tabelu FORUM_KORSINICI koja opet ima kljucno polje ID_KORISNIKA i dalje samo ona polja koja su potrebna forumu. Po potrebi i ova table se preko relacije lako JOIN-uje sa prethodne dve i podaci se mogu dobiti na jednom mestu.

Onda se ispostavi da se alikacija radi za biblioteku, pa je potrebno da se vodi evidencija o clanovima, sa specificnim podacima. Dodaje se tabela BIBLIOTEKA_KORISNICI opet sa kljucnim poljem ID_KORSINIKA i dalej specificnim podacima za biblioteku.

Ono sto je potrebno to je da modul apliakciji na neki nacin saopsti da ima sopstvenu tabelu korsinika, kako i ova znala da je upotrebi.

Ovaj nacin nije toliko felskibilan i uopsten kao prvi, i zahteva promenu u strukturi baze, medjutim daje vecu brzinu prstupa podacima i po meni, mnogo jednostavniji pristup podacima.

Pretpostavljam da se jos neko bavio ovim problemom i da ovo sto sam smislio nije nista novo, posto je logicno resenje. Interesuju me iskustva drugih i eventualni problemi koji su mi promakli.

[ NikolaVeber @ 03.03.2004. 13:14 ] @
Ja vec neko vreme radim na softveru za administraciju na jednom univerzitetu. Licno mislim da php nije bio idealno resenje za to, ali placa se, pa se ne bunim.

Inace, pristup koji sam koristio je slican onome sto si ti naveo. Jedini problem je sto posle pocinjes da tones u more tabela (kod mene sada ima oko 25 samo na ovom projektu), ali je mnogo bolje od pravljenja ogromnih tabela koje zvrje do pola prazne.