Slide 1

Slide 1 text

Uvod u Zend Framework Robert Bašić

Slide 2

Slide 2 text

O meni ● PHP od 2005., “profesionalno” od 2008. ● Volim open source: ● phpplaneta ● web2project ● zf ● Volim knjige, hack i sve ostalo što vole geekovi

Slide 3

Slide 3 text

O prezentaciji ● Uvodna priča u ZF ● Više zašto, nego kako ● Nije tutorijal, pokrivaju se osnovni koncepti

Slide 4

Slide 4 text

PHP Frameworks ● Zašto koristi framework? ● Zašto ne koristiti framework? ● CodeIgniter, Cake, Zend Framework, Symfony, Yii, Kohana... ● Bilo koji, makar 1

Slide 5

Slide 5 text

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.

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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)

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Komponente ● Auth & ACL ● DB ● MySQL, SQLite, MSSQL, PgSQL ● Forme ● View & layout ● Validatori, filteri ● i18n & l10n ● Lucene ● Mail ● PDF ● Oauth ● XML-RPC ● razni servisi ● Twitter, Akismet, ReCaptcha, Yahoo, Google, Flickr, LiveDocx... ● 60+ komponenti

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

Router ● Određuje na osnovu URI-ja koji modul, kontroler, akcija se poziva ● Omogućava mod_rewrite funkcionalnost u PHP-u

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Views ● Svaka akcija ima svoj view ● PHP kao template engine ● View helpers ● puno ugrađenih, ~55 trenutno

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Hvala na pažnji! Pitanja? ● http://robertbasic.com ● https://twitter.com/robertbasic ● https://github.com/robertbasic ● IRC: robertbasic - #phpplaneta, #zftalk, #zftalk-community, #zftalk.dev, #phpc