Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to Zend Framework 1

robertbasic
September 26, 2011

Introduction to Zend Framework 1

A talk I gave on DORS/CLUC 2011 in Zagreb, Croatia, about Zend Framework 1.

robertbasic

September 26, 2011
Tweet

More Decks by robertbasic

Other Decks in Programming

Transcript

  1. O meni • PHP od 2005., “profesionalno” od 2008. •

    Volim open source: • phpplaneta • web2project • zf • Volim knjige, hack i sve ostalo što vole geekovi
  2. O prezentaciji • Uvodna priča u ZF • Više zašto,

    nego kako • Nije tutorijal, pokrivaju se osnovni koncepti
  3. PHP Frameworks • Zašto koristi framework? • Zašto ne koristiti

    framework? • CodeIgniter, Cake, Zend Framework, Symfony, Yii, Kohana... • Bilo koji, makar 1
  4. 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.
  5. 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
  6. 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)
  7. 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
  8. 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
  9. 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
  10. 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...
  11. 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
  12. Router • Određuje na osnovu URI-ja koji modul, kontroler, akcija

    se poziva • Omogućava mod_rewrite funkcionalnost u PHP-u
  13. 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
  14. Views • Svaka akcija ima svoj view • PHP kao

    template engine • View helpers • puno ugrađenih, ~55 trenutno
  15. 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
  16. 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
  17. 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