Autor wpisu: Tomasz Kowalczyk, dodany: 11.11.2011 19:52, tagi: symfony2, doctrine, symfony
Autor wpisu: Kamil Adryjanek, dodany: 07.11.2011 00:14, tagi: symfony2, php
Od jakiegoś czasu starałem się znaleźć odpowiedni moment / trochę wolnego czasu na zapoznanie się z najnowszą wersją frameworka Symfony. Jako, że wiele osób zastanawia się / rozważa migrację swoich dotychczasowych projektów, bądź też rozpoczęcie nowych na Symfony2 postanowiłem przedstawić moje subiektywne obiektywne zdanie na temat możliwości Symfony2.
Ogromną zaletą Symfony2 jest w pełni przepisany silnik frameworka, który w pełni wykorzystuje możliwości PHP 5.3. Przestrzenie nazw nie tylko rozwiązuje problem konfliktów i długich nazw ale także sprawiają, że ładowanie potrzebnych klas jest teraz znacznie prostsze.
Instalacja
Do ściągnięcia dostępna jest gotowa paczka zawierająca wszystkie biblioteki niezbędne do rozpoczęcia pracy. Osobiście polecam instalację framewokra z Gita (najwygodniej pod Linuxem, chociaż jest też ciekawa wersja pod Windowsa dla zainteresowanych). Dzięki temu wszelkie aktualizacje zewnętrznych bibliotek, czy tez bibliotek frameworka sprowadzają się do aktualizacji plików deps i deps.lock, a następnie wywołania z wiersza poleceń komendy:
</p> <p>php bin/vendors update</p> <p>
Bundles
Symfony2 to przede wszystkim ogromne zmiany w architekturze i organizacji kodu aplikacji. Każda aplikacja składa się teraz z pakietów: bundles – coś na wzór modułu z symfony 1.X, z tym że każdy bundle jest teraz dużo bardziej niezależny: posiada odrębną logikę, konfigurację, klasy Entity czy usługi. Dzięki temu nowy mechanizm rozszerzeń Symfony2 jest w całości oparty o bundles – w sieci można znaleźć wiele ciekawie napisanych rozszerzeń: rozbudowany panel administracyjny wzorowany na Django (SonataAdmin) + szereg rozszerzeń, biblioteka do manipulacji/modyfikacji obrazków inspirowana Pythonowym PILem (Imagine), Goutte, biblioteka do budowania scenariuszy, które są następnie wykorzystywane do testowania funkcjonalności (Behat + Mink).
Formularze
Początkowo bardzo toporne – brakuje dobrej dokumentacji. Stworzenie formularza rejestracji, dodanie walidacji (dodanie zależności między polami) stanowi nie lada wyzwanie. Nie podoba mi się przeniesienie walidacji do klasy yml/xml – tak jakbyśmy wracali do symfony 1.0. Na szczęście są annotacje, które można wykorzystać zarówno w klasach Entity, jak i Models. UWAGA na problem z eAcceleratorem – straciłem kilka dobrych godzin przez problem z obcinaniem komentarzy na serwerze produkcyjnym. eAccelerator nie współpracuje poprawnie z nowymi bibliotekami: Symfony2, Doctrine2, Zend Framework, PHP Unit, … . Niestety po kilku godzinach pracy z formularzami miałem odczucie jakby cały mechanizm był teraz znacznie bardziej skomplikowany i trudny do opanowania.