User Tools

Site Tools


php:myzfsetup

:!: U IZRADI :!:

Setting Zend Framework as framework for modal applications (currently Croatian only)

This solution is implemented in loota2.

Uvod

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.

Struktura (aplikacije kao moduli)

Osnovni izlged strukture direktorija:

directory_structure.jpg

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

Dostupnost slika, .js i .css fileova u aplikacijama

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

layoutManager

:!: 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

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.

Baza

:!: 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.

User Interface (JavaScript)

Za UI odluka je pala na YUI (Yahoo UI) koji se pokazao najednostavniji i relativno dobro dokumentiran.

php/myzfsetup.txt · Last modified: d.m.Y H:i (external edit)