O meni ● PHP od 2005., “profesionalno” od 2008. ● Volim open source: ● phpplaneta ● web2project ● zf ● Volim knjige, hack i sve ostalo što vole geekovi
PHP Frameworks ● Zašto koristi framework? ● Zašto ne koristiti framework? ● CodeIgniter, Cake, Zend Framework, Symfony, Yii, Kohana... ● Bilo koji, makar 1
Zend Framework ● Open source PHP5 biblioteka za razvoj web aplikacija ● New BSD licenca ● Contributors License Agreement ● Razvoj počeo leta 2005. ● 0.1.0. mart '06., 1.0.0 jul '07., 1.5.0. mart '08., 1.8.0. april '09.
Zašto Zend Framework? ● Dobar kôd, unit testiran ● 80% code coverage minimum, 90% poželjan ● Mogu se koristiti samo potrebni delovi, nezavisno od ostalih delova ● Cilj je da da 80%, ostalih 20% je posao programera ● Dokumentacija je dobra (barem po meni) ● Zajednica, mailing liste, blogovi, IRC, twitter
Zašto ne Zend Framework? ● Ogroman ● sama biblioteka ~25MB ● biblioteka + docs + tests + … ~75MB ● Težak za savladiti ● Uspeo tek iz drugog pokušaja ● Mogu se koristiti samo potrebni delovi, nezavisno od ostalih delova ● Spor(iji od ostalih)
Kako se može koristiti? ● Samo potrebne komponente ● Jedna komponenta može zavisiti od neke druge ● Sve zajedno, MVC ● Koristi PEAR konvenciju za nazive ● class Foo_Bar_Baz => Foo/Bar/Baz.php ● lako za autoload => lako za ubaciti u neki već postojeći projekat ili uz neku drugu biblioteku
Full stack, MVC ● Češće se koristi na ovaj način ● Prilagodljiv, jako puno toga se može izmeniti ● PHP array, INI, XML, odnedavno i YAML konfiguracija ● Preporučeni načini korišćenja ● Komponente se dobro slažu ● Zend_Form + Zend_Validate + Zend_Filter ● Zend_Form + Zend_View
Zend_Application ● Inicijalizuje aplikaciju, podešava PHP okruženje, autoloader, razne resurse ● Bootstrapping – inicijalizacija ● ono što je konfigurisano da se inicijalizuje ● resursi za db, view, cache, log, sesiju... ● U zavisnosti od okruženja ● web, cli, test...
Front Controller ● Svi zahtevi prolaze kroz Front Controller ● usmerava zahtev ● poziva odgovarajuću akciju ● skuplja odgovore ● vraća odgovor ● Daje mogućnost uključivanja u određeni deo zahteva pomoću plugin-ova
Kontroleri i akcije ● Kontroler je skup akcija ● Akcija je “jedna strana” aplikacije ● Podatak od korisnika ka modelu ● Podatak od modela ka korisniku ● Podrazumevani kontroler/akcija ● Action helpers
Modeli ● Modeli sadrže “srce” aplikacije, poslovnu logiku ● U velikoj meri zavise od zahteva aplikacije ● Zend Framework ne daje modele ● Komunikacija sa bazom podataka je samo jedan od poslova modela ● Prava pristupa, validacija i filtracija podataka, pristup web servisima... ● Zend_Db
Zend Framework 2 ● U razvoju već više od godinu dana ● PHP 5.3+ ● Mnogi delovi poboljšani, ubrzani ● Lakše za savladati, striktnija standardizacija dokumentacije ● git umesto SVN-a ● v 2.0.0. bi trebalo da bude dostupno krajem godine