Autor wpisu: batman, dodany: 09.09.2011 08:00, tagi: php, symfony
Poprzednim razem gdy zabrałem się za ocenę Symfony2, moja cierpliwość bardzo szybko się skończyła. W komentarzach nie zostawiliście na mnie suchej nitki (tylko kilka osób wykazało zrozumienie), dlatego postanowiłem nieco dłużej pomęczyć Symfony2 i jeszcze raz opisać moje wrażenia (tym razem odkładając emocje na półkę). Zatem do dzieła.
Wszystko zaczyna się na stronie Quick Tour, gdzie poznajemy podstawy frameworka. Przewodnik został podzielony na cztery części.
The Big Picture
Sposobów na pobranie frameworka jest kilka. Ja zdecydowałem się na najprostszy z nich, czyli pobranie paczki Symfony Standard Edition. Po rozpakowaniu jej, sprawdzamy czy wszystkie wymagane rozszerzenia PHP są zainstalowane. Czego nam brakuje dowiemy się po wpisaniu do przeglądarki adresu http://localhost/Symfony/web/config.php. Niestety już na samym początku pojawiły się problemy – Install and enable a PHP accelerator like APC (highly recommended). Nie mam nic przeciwko akceleratorom jako wsparciu aplikacji działających pod dużym obciążeniem, ale jeśli akcelerator jest wymieniany jako wysoce zalecany do działa w ogóle, to źle to świadczy o frameworku.
Nie zrażając się pierwszymi zgrzytami, kontynuuję przewodnik i wpisuję do przeglądarki adres http://localhost/Symfony/web/app_dev.php/. Zgodnie z oczekiwaniami, pojawiła się strona startowa oraz pasek z debugiem, który jak się okazało zawiera wiele informacji przydatnych na etapie tworzenia i testowania aplikacji.
Następne w kolejce są podstawy działania frameworka – routing, kontrolery, szablony oraz bundle.
Routing
Ścieżki można definiować na kilka sposób i wszystko byłoby dobrze, gdyby nie możliwość korzystania z adnotacji. Dlaczego? Ponieważ w myśl zasady “skoro można tak zrobić, to tak będzie to robione”, wiele osób będzie “chowało” ścieżki w kontrolerach, skutecznie utrudniając ich odnalezienie i ewentualną modyfikację.
Poza tym, routing prezentuje się świetnie. Jest prosty w użyciu, nie wymaga znajomości magicznych zaklęć i daje nieograniczone możliwości w definiowaniu ścieżek. In plus należy zaliczyć możliwość określania typu requestu, a co za tym idzie dla jednego adresu, np. /kontakt możemy przypisać dwie akcje – jedną dla GET, drugą dla POST. Bardzo pomocne. Jeszcze bardziej pomocne jest określanie formatu odpowiedzi. Na koniec jeszcze warto wspomnieć, że parametry ścieżki są dostępne jako argumenty metody (tak jak w ASP.NET MVC).
Ponieważ debugowanie ścieżek zapisanych w kontrolerach to koszmar, Symfony2 dostarcza konsolowe narzędzie pozwalające wylistować wszystkie ścieżki i ich szczegóły.
Kontroler
Sercem każdego frameworka MVC jest kontroler, który obsługuje przychodzące żądanie i odpowiada na nie, najczęściej w postaci kodu HTML, rzadziej jako JSON, XML, tekst lub przekierowanie (inne typy również są możliwe). W sumie na ten temat nie da się wiele napisać. Kontroler jaki jest każdy widzi i nic nowego w tej materii nie da się wymyślić.
Szablony
W mojej opinii systemy szablonów w PHP to pomyłka, ale skoro już i tak Symfony2 wszystko pakuje do cache’u to niech będą. Składnia to kalka szablonów z Django. Przynajmniej wzorują się na dobrym rozwiązaniu. Nic nie stoi na przeszkodzie, aby wykorzystać dowolny inny system szablonów.