Zend Framework 2.0 w wersji stabilnej – nowa jakość?


Zend Framework 2.0 w wersji stabilnej - nowa jakość?

Dzień nowych wersji frameworków! Informowałem już o wydaniu kolejnej stabilnej wersji frameworka Symfony 2.1.0, a także dzisiaj wydany został jego główny konkurent, a mianowicie Zend Framework 2.0.

Zenda miałem okazję poznać już 3 lata temu. Były to moje pierwsze kroki z obiektowym programowaniem w PHP. Jak to początki, były niezwykle trudne. Wszystko było nowe. OOP, MVC i wiele innych technik, metodologii oraz koncepcji musiałem zrozumieć i dobrze sobie przyswoić. Do czasu pojawienia się Symfony2 był to mój ulubiony, a w zasadzie jedyny framework, który miałem okazję używać w swoich projektach. Na bazie Zenda napisałem nawet swój własny mini framework, który także posłużył mi do kilku projektów, które z powodzeniem działają do dnia dzisiejszego.

Po blisko 2 latach pracy, a 5 latach od wydania pierwszej wersji Zend Framework światło dzienne ujrzała właśnie jego druga wersja. Framework zaprojektowany i zbudowany został zupełnie od nowa. Całość miała być bardziej spójna, lepiej udokumentowana, zwiększająca produktywność i szybkość uruchamiania i działania aplikacji. Jeżeli rzeczywiście się to udało i moje testy to potwierdzą, to Symfony2 w końcu zyska godnego konkurenta.

Nowa wersja to konieczność napisania naszych aplikacji od zera. Nie ma możliwości migracji lub aktualizacji z pierwszej wersji do obecnej. Całości niestety trzeba nauczyć się od nowa.

Zend Framework 2.0 został podzielony na moduły, które są niezależnymi bytami, które tak samo jak w Symfony2 mogą być używane w wielu aplikacjach. Same moduły mogą być pakowane do archiwum phar, przez co jest to podobne rozwiązanie do użycia Composera. Moduł to także niezależna przestrzeń nazw, własne biblioteki, pliki szablonów, CSS, JavaScript, grafika. Budowanie z klocków staje się coraz bardziej powszechne i popularne.

Nowy Zend, to także nowa obsługa żądań (request). Opiera się ona teraz na zasadzie obsługi eventów, do których możemy się podpinać na różnych poziomach obsługi żądania.

PHP DI (dependency injection), czyli to co kocham w Symfony2. Pozwala na wstrzykiwanie zależności, które zastąpiły twarde odwołania.

Sporo zmienia się także w widokach. Akcje zwracać będą teraz obiekt ViewModel, który odpowiadać będzie za odwołanie się do konkretnego pliku szablonu, jego ustawienia oraz przekazanie zmiennych. Mamy tutaj także możliwość znaną z Twiga, który jest domyślnym systemem szablonów w Symfony2, a mianowicie dziedziczenia szablonów, która pozwala na osadzanie jednego szablonu w innym.

Całość jest rzeczywiście niezwykle spójna i dobrze przemyślana.

Pobieżnie przebrnąłem przez nową dokumentację, która opisuje jak korzystać z różnych standardowych komponentow, takich jak: Zend_Form, Zend_cache itd. Stworzony został także podręcznik, który demonstruje cały cykl tworzenia aplikacji w ZF2. Mamy tutaj do dyspozycji także przypadki użycia poszczególnych metod i zależności między komponentami. Ujednolicone zostały inferfejsy w całym obszarze Zend Framework 2.0, a także ustandaryzowane mechanizmy konfiguracji, za które odpowiada oddzielny komponent.

Zend Framework 2.0 to także praktyczny brak singletonów, które nie pozwalały, a w najmniejszym stopniu komplikowały rozszerzanie lub zmianę funkcjonalności. Komponenty możemy konfigurować pod względem tego, czy pozwalają one na rozszerzalność i współprace z innymi modułami.

Deweloperzy projektu postawili sobie za cel poprawę wydajności rzędu 200 do 300%. Czy im się to udało? Z pewnością będę się mógł przekonać już niedługo.

Nie miałem na razie czasu by poznać ZF2 lepiej, ale myślę, że zmieni się to już niedługo. Mam jednak nadzieję, że twórcy dobrze wykonali swoją pracę i odpowiednio wykorzystali czas poświęcony na budowę nowej wersji. Jeżeli macie już jakieś doświadczenia z ZF2, to oczywiście dajcie znać w komentarzach.


[1], [2]