# Pierwsze wrażenia z Zend Frameworka

Dodany dnia 04.03.2008 przez waXain

Pierwszy kontak z ZF i pierwsze moje wrażenie po jego "instalacji" - jest super!Instalacja oparta jest o bardzo proste czynności, którymi w zasadzie są: skopiowanie struktury ZF do odpowiedniego miejsca na serwerze i utworzenie pliku index.php (bootstrapper) jako głównego pliku naszej strony, utworzenie odpowiedniego pliku .htaccess (tutoriali jest całe mnóstwo), utworzenie pliku konfiguracyjnego i w zależności od potrzeb wypełnienie go odpowiedni wpisami (konfiguracja bazy, ścieżek dostępu itd.). W zasadzie nie będę się rozpisywał w temacie instalcji, wszystko jest już dobrze opisane na stronach:

http://wojciech.naruniec.info/inne/zend-framework-tutorial/pl/
http://blog.heavymind.net/zend-framework-tutorial/

Czas wykonania wszystkich czynności związanych z podstawową instalacją naszego frameworka nie powinien przekroczyć 30 min. Cóż dalej...
W pierwszym "uderzeniu" postanowiłem podpiąć pod ZF Smartye'go. Pomyślałem sobie - napiszę odpowiednią klasę - coś jednak zaświtało mi do głowy, że przecież ktoś już mógł to napisać i tak oto proszę: http://naneau.nl/
Prosta, można by rzec banalna klasa, której podłączenie zajeło mi w porywach jakieś 2 min.
Następną czynnością było utworzenie odpowiednich plików kontrollerów projektu, dodanie plików modeli i oczywiście plików widoku (.tpl). Żeby wszystko miało ręce i nogi ścieżki wszelkich katalogów projektu oraz parametry konfiguracyjne bazy dodałem do pliku konfiguracji (config.ini). Aby się do niej odwołać wystarczy zarejestrować nasza konfigurację (wpis w pliku index.php) a później już tylko za pomocą klasy Zend_Registry w ramach potrzeb dobierać się do odpowiednich zmiennych konfiguracyjnych. Wszystko było takie proste - niestety do czasu gdy chciałem odpowiednio ustawić adresy url. ZF dysponuje specjalną do tego klasą Zend_Controller_Router i chociaż w przykładach dokumentacji oraz innych źródłach wyglądało to banalnie - musiałem nieźle się nagimnastykować by działało dokładnie tak jak chciałem.
Największy problem sprawiło mi ustawienie "multi przekierowania" dla nazw "lab, mousike, ja" na jeden wspólny kontroler do którego będą przekazywane 3 różne parametry (rodzaj, akcja, id) z których ostatni może być pusty. Po około godzinie przeszukiwania dokumentacji (niestety nie jest ona najlepsza-brak chociażby porządnej wyszukiwarki) i pokombiniowaniu udało się (trzeba skorzystać z Zend_Controller_Router_Route_Regex), ustawianie dalszych przekierowań poszło znacznie sprawniej. Dla potomnych, przykład poniżej.
$router = $frontController->getRouter();
$route = new Zend_Controller_Router_Route_Regex(
'(lab|ja|mousike)/(\w+)/(\d*?)',
        array(
            'controller' => 'artykuly'
        ),
        array(
            1=>'rodzaj',
            2=>'action',
            3=>'id'
        )
    );
$router->addRoute('czytaj', $route);
Pozostała już tylko kwestia pobrania danych z bazy. Tu znowuż miłe zaskocznie, gdyż tak naprawdę sposobów na komunikację z naszą bazą jest kilka. Można skorzystać z gotowych metod (fetchRow, fetchAll itd.), z Active Query (pisane łańcuchowo) oraz z tradycyjnej metody napisania "czystego" SQL-a, czyli jak kto lubi, jak kto woli :)

Co mnie nieco zdziwiło podczas przeszukiwania zasobów sieci pod kątem budowania modeli mojego projektu to fakt iż bardzo mało było przykładów na faktyczne wykorzystanie tychże plików. Same pliki, owszem występowały, ale bardziej na zasadzie samego istnienia niż faktycznego ich wykorzystania. Z założenia w MVC model pełni rolę "przechowywania danych" a także spójnego interfejsu przetwarzania tychże danych. Postanowiłem nieco wzbogacić moje modele i przenieść odpowiednie zapytania do bazy z kontrolerów właśnie do nich. Od tego momentu wszystko wydało się bardziej spójne i czytelniejsze. Projekt ruszył.

Po tym krótkim wstępie za plusy ZF mogę uznać:
- bardzo proste i szybkie postawienie "podstawy" projektu,
- fajnie rozwiązana kwestia konfiguracji,
- prosta komunikacja z bazą danych

Na minus w mojej opini zasługują:
- brak możliwości wyszukiwania w dokumentacji (pozostaje google),
- zbyt proste przykłady w dokumentacji,
- nie do końca dla mnie jasne (przynajmniej na dzień dzisiejszy) wykorzystanie i rola modeli w ZF

Póki co tyle, niebawem dalsza część moich uwag/spostrzeżeń/prac dot. ZF (m.in klas Form, Locale).

Tagi: zend framework instalacja

# komentarze

Dodany dnia 17.03.2008 przez: wojtek | www: http://www.zymonik.pl

Paradoksalnie najbardziej w ZF przeszkadza mi wymóg PHP5 :/ i chociaż kod w PHP5 jest przyjemniejszy dla oka, nie mówiąc o utrzymaniu, to jednak klienci ciągle jadą na 4.3 czy innym ustrojstwie i stąd mój wybór to CodeIgniter ;)

ZF mam jednak na oku kod początku :)
 

x
  •  
* - pola wymagane