U IZRADI
This solution is implemented in loota2.
Ideja je bila postaviti ZF tako da se aplikacije mogu dodavati u njega kao nezavisni modeli. Zamišnjeno je da samo iskopirate svoj modulu (applikaciju) u zadani direktorij i da ona odmh radi.
Osnovni izlged strukture direktorija:
Direktori applications
sadrzi applikacije. One strukturirane po tipicnoj ZF shemi za osnovnu (defaultnu) rutu. No da bi direktorij bio prepoznati kao modul mora imati file module.php
. Taj file mora imati implementiranu klasu slijedeceg imena direktoriapplikacijeModul
koja mora implementirati loota2Module
interface. Module loada objekt klase moduleManager.php
.
Direkctori Core
sadrzi sve sto je potrebno za osnovno funkcioniranje. To je u biti veza s aplikacijama (moduleManager), rad s layoutima (layoutMAnager) i osnovne radnje s korisnicima (AuthMaanger).
Direktoriy library
sadrzi externe biblioteke (ZF, ….).
Direktori public
sadrzi ZF bootstrap datoteku (index.php) te ostale public fileove (slike, .css i .js fileove) koji su potrebni za osnovno funkcioniranje
Gotovo uvijek postoji potreba da aplikacije kao moduli imaju svoje public fileove (slike, .css, .js, …). Da zadrze neovisnost i jednostavnost instalacije (da sve sto se tice jedne aplikacije bude u njenom folderu) trebalo je naci nacina da se ti fileovi mogu prikazati. Bile su dvije mogucnosti. Prva da se to napravi pomocu php ili druga pomocu samog apachea. Varijanta da to radi apache je bolja (brza i jednostavnija za implementaciju) pa sam se odlucio za nju. Za to je trebalo izmjeniti .htaccess
file u public
direktoriju.
Iz:
RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
U:
RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php RewriteRule public/([a-zA-Z0-9]+)/(.+) ../applications/$1/public/$2
Nako ove izmjene svaka aplikacije u svoj puublic
direktori moze stavljati javno dostupne fileove ovih extenzija: .js .ico .gif .jpg .png .css
. Tako ako sada imate npr. /applications/mojaapp/public/main.jpg
njegov url je public/mojaapp/main.jpg
.
- ovo gore se jos mora istestirati i pogledati sama sigurnost rijesenja
31.01.2008. Izašao je officialna ZF layout klasa - probati cu je iskoristiti ovdije
Posto ZF ne sadrži layout manager napravljen je nakakvi jednostavni layout mamanger baziran na Zend_View klasi.
Prijevodi su rijeseni s ZF gettext-om. Za one koji ne znaju to je neovisna implementacija gettexta i nema nikakve veze s standardnim PHP gettextom.
Core prijevode loada layoutManager klasa, a svaka aplikacija loada svoje prijevode tako da se zadrži neovisnost.
10.3.2009. - cini se da cu morati zamjenit propel necim drugim najverovatnije vratiti na staro (ZF DB klase). Naime pojevio se problem kada jedna aplikacija (modul) treba podatke iz druge applikacije odnosno kada ima svoje tablice vezane foreign key-evima na tablice u drugoj aplikaciji. Tada da bi se koristio propel treba generirati ponovo gererirati klase koje vec postoje u drugoj tablici tako da imamo dupliranje koda koje po mom svakako treba izbjeci.
Nakon puno vremena odlucio sam koristiti propel cisto radi neovisnosti o bazama.
Posto je u igri obicno jedna baza i razne aplikacije (moduli) moraju moci dohvacati iste podatke mora se na neki nacin definirati ovisnost modula (gledano na bazu). Ono sto mi je cilj da to rijesim preko ajaxa ali vidjeti cemo.
Za UI odluka je pala na YUI (Yahoo UI) koji se pokazao najednostavniji i relativno dobro dokumentiran.