Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM    Subskrybuj kanał ATOM dla tagu symfony Kanał ATOM (tag: symfony)

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.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: batman, dodany: 06.09.2011 08:00, tagi: php, symfony

Prawie rok temu popełniłem wpis Symfony 2 okiem zendowca. Mimo iż testowana wersja nie była finalna, wywarła dobre ogólne wrażenie. Jakiś czas temu społeczność PHP świętowała wydanie stabilnej wersji frameworka, organizując przy tym różnego rodzaju imprezy i zalewając Twittera i RSS informacjami na temat Symfony 2. Konfetti opadło, dokumentacja wydaje się być skończona, przede mną duży projekt, przyszła więc pora na sprawdzenie co w trawie piszczy.

Zaczęło się standardowo od pobrania paczki z frameworkiem i rozpakowaniu jej na serwerze. Po uruchomieniu check.php, pokazało kilka błędów i ostrzeżeń wynikających ze świeżej instalacji PHP. Po dodaniu wymaganych rozszerzeń, wszystko poszło jak po maśle. Moją uwagę przykuło groźnie brzmiące ostrzeżenie Install a PHP accelerator like APC (highly recommended). Niby nic, ale jeśli już na dzień dobry dostaję po twarzy informacją, że framework wymaga akceleratora, to zaczynam w niego wątpić.

Pamiętny ostrzeżenia, zabrałem się za konfigurację Nginx (nie korzystam z Apache od pewnego czasu). Nie będę rozpisywał się na ten temat, ponieważ dokładne instrukcje można znaleźć pod adresem http://www.zalas.eu/nginx-configuration-for-symfony-projects.

Po zainstalowaniu frameworka, odpaliłem przygotowane strony, pobawiłem się Hello Fabien! i zabrałem za przeglądanie kodu. Pierwsze zdziwienie – ogromna ilość plików cache. Co to musi być za kobyła, że wszystko leci do cache? Ok, niby dzięki temu wszystko ładnie śmiga, ale jaki jest sens tworzenia czegoś, co bez takiej ilości cache nie będzie w stanie działać (nie zapominajmy o wysoce zalecanym akceleratorze). Co mnie najbardziej zdziwiło to cache Twiga, który zapisany do postaci klasy, przy pomocy echo, wyświetla kod HTML bezpośrednio w metodzie. O tak:

    // line 15
    public function block_menu($context, array $blocks = array())
    {
        // line 16
        echo "<span class=\"label\">
    <img src=\"";
        // line 17
        echo twig_escape_filter($this->env, $this->env->getExtension('assets')->getAssetUrl("bundles/webprofiler/images/profiler/mail.png"), "html");
        echo "\" alt=\"Configuration\" /></span>
    <strong>E-Mails
    <span class=\"count\">
        <span>";
        // line 20
        echo twig_escape_filter($this->env, $this->getAttribute($this->getContext($context, 'collector'), "messagecount", array(), "any", false), "html");
        echo "</span>
    

";
    }

Mój niepokój wzrósł po tym, jak w katalogu app nie znalazłem kodu aplikacji. WTF? Czy aplikacja to tylko cache, logi, konfiguracja i widoki? Gdzie reszta? Okazało się, że kontrolery (modeli się nie doszukałem) znajdują się w katalogu src. Czyżby kod Symfony2 był kompilowany ze źródeł do postaci binarnej lub jeszcze większej ilości cache? Tego nie wiem – mój limit WTF/minutę za szybko się wyczerpał.

A wyczerpał się między innymi dlatego, że routing, coś po powinno być jak najprostsze, został beznadziejnie zaprojektowany. Dlaczego? Ponieważ ścieżki można zdefiniować jako adnotacje w kontrolerze. Znaleźć takie coś w większej aplikacji musi graniczyć z cudem.

Niestety nie miałem okazji dotrwać do modeli i generatorów. Co więcej, nie udało mi się w sensownym czasie dotrzeć do tutoriali traktujących o tych zagadnieniach. Wygląda na to, że Zend Framework na długo pozostanie moim ulubionym frameworkiem PHP (przynajmniej do czasu wydania drugiej wersji).

Autor wpisu: Tomasz Kowalczyk, dodany: 19.08.2011 23:58, tagi: php, doctrine, sql, symfony

Pobieranie informacji z baz(y) danych to jedna z podstawowych czynności, jaką wykonujemy podczas tworzenia różnego rodzaju stron internetowych. Aby uzyskać potrzebne dane w zdecydowanej większości przypadków wystarczy proste zapytanie SQL [w przypadku Doctrine możemy też wykorzystać język DQL]. Niektóre przypadki wymagają jednak potrzeba bardziej ambitnej ekwilibrystyki, aby przygotować odpowiedni zbiór rekordów. W dzisiejszym wpisie chciałbym [...]

Autor wpisu: Tomasz Kowalczyk, dodany: 16.08.2011 23:50, tagi: symfony, framework

Framework symfony, jak praktycznie każdy na rynku ma swoje "smaczki", które czasem umilają, a czasem bardzo utrudniają tworzenie kolejnych funkcji projektu - zamiast zająć się właściwą pracą musimy przeszukiwać strony manuala i "czeluści" Internetu, aby znaleźć Jedyną Słuszną (tm) drogę wykonania danego zadania. W dzisiejszym wpisie chciałbym pokazać, w jaki sposób "dobrać się" do "niewyescape'owanych" [...]

Autor wpisu: Tomasz Kowalczyk, dodany: 13.08.2011 21:32, tagi: symfony, php

Komponent formularzy frameworka symfony jest naprawdę bardzo potężnym narzędziem, pozwalającym na tworzenie zaawansowanych rozwiązań przetwarzających dane pochodzące od użytkownika na odpowiednią formę. O ile przetwarzanie formularza zazwyczaj sprowadza się do operacji na przesłanych do niego danych, o tyle czasem potrzebujemy innych, zawartych poza jego polami. W dzisiejszym wpisie chciałbym pokazać, w jaki sposób przekazać te [...]

Autor wpisu: Wojciech Sznapka, dodany: 07.08.2011 19:29, tagi: php, symfony, symfony2

On July 28th Symfony2 was finally released, with launch parties all over the world. Developers are excited, managers are excited and whole echosystem is happy. They’re right, there are plenty of reasons to be optimistic. symfony 1.x is a great framework, I made many  projects with it, nevertheless Symfony2 is a new way of doing [...]

Autor wpisu: Wojciech Sznapka, dodany: 01.08.2011 23:50, tagi: php, symfony, symfony2

Zapraszam do zapoznania się z moją prezentacją pt. RESTful Symfony2, którą można obejrzeć na xlabie http://xlab.pl/2011/08/restful-symfony2/
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.