Symfony2 | Początki z Symfony2

Nie tak dawno zacząłem swoją przygodę z Symfony2, okazało się jednak że jest stosunkowo ciężko przejść z CakePHP na nowy framework. Tutoriale dostępne na stronie symfony2 jednak nie pomogły wystarczająco, dlatego kupiłem książkę "Symfony 2 od podstaw" autorstwa Włodzimierza Gajdy. Okazało się, że ta książka zawiera wszystkie konieczne informacje, które ułatwiają rozpoczęcie prac z nowym frameworkiem.

Zaczynamy standardowo - strona Symfony2 a następnie pobieramy paczkę zip/tgz. Do wyboru są dwie opcje: Standard oraz "Without Vendors". Każdy zaleca pobieranie paczki Standard, która zawiera wszystkie potrzebne Vendors. Oczywiście na dalszym etapie można pokusić się o lżejszą opcję czyli Without Vendors i instalować potem tylko potrzebne narzędzia.

Powyżej zamieściłem gotowy układ plików na serwerze, czyli zawrtość folderu public_html. Standardowo układ plików i folderów jest nieznacznie inny, ale o tym później.

Wcześniej nie miałem styczności z Symfony, dlatego nowy model jaki zobaczyłem w Symfony2 trochę mnie zaskoczył. Aplikacje pisane przy użyciu Symfony2 są budowane w oparciu o Bundle - coś w rodzaju modułów, które mogą działać całkowicie niezależnie. Dodatkowo mogą mieć niezależne zasoby (pliki css, js, itp.). Pozwala to budować przejrzyste struktury, ale wymaga od programisty przemyślenia aplikacji już na początku. Kod źródłowy kontrolerów zawarty jest w podfolderach folderu src. Zastosowanie Bundle'ów jest przydatne szczególnie, gdy tworzymy sporo systemów internetowych i pewne funkcjonalności są przez nas często powtarzane.

Pracując z Symfony2 można prowadzić prace na serwerze localhost jak i serwerze FTP na konkretnym hostingu. Jednak problemem w moim przypadku okazał się folder web. Na serwerze lokalnym wszystkie adresy są poprzedzone /web/ a na właściwym adresie tego przedrostka nie powinno już być, np. lokalny adres http://localhost/adres/web/blog, natomiast na hostingu http://adres/blog. Żeby wszystko działało poprawnie w takim założeniu, należy skonfigurować w konfiguracji serwera Apache domenę, aby wszystko uruchamiało się już z folderu web. Jednak do tej pory nie spotkałem się z taką możliwością, no chyba że na maszynach wirtualnych. Dlatego szukałem sposobu, aby pominąć w adresie /web/. Na forach były różne porady co do zmian w plikach, przekierowań w pliku .htaccess. Jednak właściwym rozwiązaniem okazało się przekonfigurowanie Symfony2 w taki sposób, żeby folder public_html był traktowany jak folder web. Był to zabie stosunkowo prosty - przeniesienie wszsytkich plików z web o jeden poziom wyżej oraz zmiana w plikach app.php, app_dev.php.

Dlaczego warto pracować z Symfony2, korzystając z localhost? Dzięki takiemu zabiegowi można sporą część kodu wygenerować za pomocą wbudowanych narzędzi i generatorów. Zarówno PhpStorm jak i Netbeans umożliwiają bezpośredni dostęp tzw. wiersza poleceń w obrębie danego projektu, dlatego wygenerowanie szablonu Bundle zajmuje kilka sekund i nie trzeba ręcznie tworzyć całej struktury. Dodatkowo pracując lokalnie Symfony udostępnia specjlany toolbar dla programisty, prezentujący czas ładowanie, zużycie zasobów, czy ilość i efektywność pracy z bazą danyc; takie dane domyślnie na serwerze produkcyjnym nie są dostępne. Idąc krok dalej, na localhost mamy dostęp do wyświetlania błędów oraz szczegółowych opisów i lokalizacji tych błędów, a na serwerze zobaczymy tylko prosty komunikat, że coś nie działa albo strona tymczasowo niedostępna, dzięki czemu nie atakujemy użytkownika mnóstwem zbędnych informacji.

Symfony2 daje programistom sporą swobodę w konfiguracji systemu, oraz sposobem zapisu tej konfiguracji. Podobnie ma się sprawa z renderowaniem szablonu strony oraz poszczególnych widoków. Osobiście zdecydowałem się na sugerowany typ TWIG oraz konfigraucję typu ANNOTATION. O tych i innych zapisach napiszę w innym artykule.

Warto wspomnieć, że już po krótkim czasie praca z Symfony staje się przyjemna i dość intuicyjna. O ile początek był dość ciężki, o tyle teraz jest już w miarę z górki i kolejne etapy mojej nauki idą już znacznie szybciej.

Kontakt