Pierwszy mój artykuł na temat frameworka będzie się tyczył Symfony(wersja 1.1). Jako przykładowa aplikacja nie posłuży nam blog, takowy możemy wykonać na podstawie intruckji ze strony projektu, tudzież z tutoriala na sitepoint. Nasza aplikacją będzie prostą galerią zdjęć, w której będziemy mogli zamiszczać swoje fotki z opisem, dodawać tagi i umożliwić użytkownikowi zostawienie komentarza. Artykuł o Symfony podzieliłem na 4 części:
Na końcu każdego artykułu będzie znajdować się archiwum z "obecnym stanem robót".
Na wstępie zakładam, że każda z osób, która tu dotarła ma poprawie zainstalowany serwer www wraz php i bazą danych(przykładowa aplikacja będzie pracować na mysql). Muszę napisać, że aby sprawnie pracować i zrozumieć idee Symfony, bedziemy musieli posiadać wiedzę i jakieś doświadczenie z zakresu programowania obiektowego w PHP5. Dokładniej bardzo często spotkamy statyczne metody, właściwości oraz dziedziczenie, które w dużej mierze jest podstawą frameworka. Jeżeli wyżej wymienione terminy tobie nic nie mówią, odsyłam ciebie do swoich artykułów na temat programowania obiektowego, które możesz znaleźć tu - programowanie obiektowe.
Środowisko w którym będe pisał przykładową aplikacje to:
Fedora Core 8 z serwerem Apache 2.2.9, PHP 5.2.6 oraz MySQL 5.0
Wywoływane komendy będa w środowisku Linux, aby działało to na systemie Windows musimy mieć poprawnie skonfigurowaną zmienną systemową Path, jeśli tego nie chcemy zmieniać, musimy podawać pełna ścieżkę do pliku php-cli.
Symfony występuje w dwóch wersjach do pobrania(pomijam svn, zaawansowani użytkownicy mogą próbować w ten sposób pobierać frameworka). Pierwszą jest kanał pear, który tu opisze oraz tzw. sandboxa. Sandbox jest to pusty projekt, który zawiera w sobie wszystkie niezbędne biblioteki do działania. Domyślnie jest skonfigurowany dla sqlite. Jeżeli decydujesz się na tą wersje to możesz ją pobrać z adresu http://www.symfony-project.org/get/sf_sandbox_1_1.zip i od razu przejść do części "konfiguracja hosta wirtualnego". Minimalne wymagania to na pewno PHP5, baza danych wg uznania.
Podczas instalacji Symfony, zawsze korzystam z paczki pear, która daje mi tą wygode, że nie musze trzymać wielu zduplikowanych plików, jak w przypadku Sandbox'a.
Zaczynamy najpierw od dodania kanału pear:
Kiedy wszystko już zainstalowaliśmy musimy utworzyć pusty projekt aby móc skonfigurować wirtualnego hosta. Zaczynamy tworzyć pusty projekt, pierwszą rzeczą jaką musimy zrobić jest wybranie ścieżki w moim wypadku będzie to /var/webs/galeria. Przechodzimy do tego katalogu i w celu utworzenia projektu wykorzystujemy standardowo dołączony do frameworka generator o nazwie symfony.
Jeżeli strone umieściliśmy w katalogu z którego domyślnie serwer Apache wczytuje serwisy wystarczy w pliku httpd.conf odszukać zmienną DocumentRoot i dopisać do niej katalog web, z którego domyślnie startuje nasza aplikacja. Jeśli zaś chcemy tak jak ja aby nasz projekt był obsługiwany przez np. subdomenę, jak w moim wypadku http://galeria.mephir.net.pl , mysimy skonfigurować poprawnie vhosta. Pierwszą rzeczą jakiej musimy dopilnować jest to aby przed definicją wirtualnego hosta była zmienna NameVirtualServer. U mnie wygląda ona tak:
DocumentRoot oraz tagu Directory do własnych ścieżek. Pod wyżej wymienionym vhostem czyli adresem http://galeria.mephir.net.pl będzie można prześledzić działanie całego projektu, wraz z trybem developerskim. Po zmianie konfiguracji serwera musimy oczywiście przeładować go lub zrestartować. Obecnie jeżeli wpiszemy nasz adres efektem będzie wyświetlenie komunikatu że nie znaleziono strony.
W naszym przykładzie w projekcie utworzymy dwie aplikacjie frontend, która będzie widoczna dla naszych gości oraz backend, która będzie naszym panelem administracyjnym. Aby utworzyć wyżej wymienione aplikacje musimy znowu skorzystać z generatora symfony. Przechodzimy więc go katalogu głównego projektu i wpisujemy dwie komendy:
Utworzą one nam podstawową strukture dla aplikacji frontend i backend. Jeżeli wejdziemy do katalogu apps/ zobaczymy, że pojawiły sie tam dwa nowe katalogi o nazwach naszych aplikacji. Teraz możemy wejść na naszą strone i jeżeli wszystkie operacje sie powiodły powinniśmy ujrzeć taki ekran:

Na wstępie powiem trochę o samych plikach konfiguracyjnych, większość plików konfiguracyjnych jest w formacie yaml. Format ten pozwala w łatwy i szybki sposób przekształcić nam plik w tablice asocjacyjną. Jedną z głównych rzeczy, o której musimy pamiętać korzystając z yaml to, że nie wolno w nich używać znaków tabulacji, wcięcia robi się za pomocą spacji, reszte zobaczymy już na przykładach. Dla osób korzystających z edytora Eclipse polecam plugin, który ułatwia prace z plikami yml, między innymi pilnując wcięć, dostepny jest on pod adresem http://www.noy.cc/symfoclipse/ . Teraz przechodzimy już do konfiguracji bazy musimy to zrobić w dwóch plikach z katalogu config, który znajduje się w głównym folderze projektu. Pliki te to databases.yml oraz propel.ini. Jeżeli otworzymy pierwszy z nich zauważymy, że całość jest zakomentowana("#" oznacza komentarz w plikach yaml). W wersji pear wygląda on tak:
mysql://galeria:haslo@localhost/galeria_dbpropel.ini i szukamy podobnych lini:Aby móc w pełni korzystać z dobrodziejstw Symfony musimy mu podać scheme bazy danych. Robimy to w pliku schema.yml znajdującym sie w tym samym katalogu co pliki konfiguracyjne bazy. Jeżeli go otworzymy zobaczymy, że jest pusty, więc musimy do niego dodać nastepującą treść:
photo_id: ~ jeżeli nazwe pola wpiszemy nazwatabeli_id i jako typ ustawimy tylde wtedy automatycznie zostanie nam stworzony klucz obcy(ForeignKey) do pola "id" w tabeli "nazwatabeli". Musimy pamiętać, że Symfony, a dokładniej Propel działa na tabelach InnoDB. Do opisu został ostatni element _attributes, który pozwala nam na definicje atrybutów dla tabel. phpName określa np. nazwe modelu.| Załącznik | Wielkość |
|---|---|
| galeria-0.1.1.zip | 284.5 KB |
yaml to to, że nie wolnow
yaml to to, że nie wolnow nich "wolno w nich"
reszte zobaczymy na przykładach już. "już na przykładach"
nazewnictwa pół zaoszczędzamy "pól"
Dzięki!
Dzięki Marcin ...
nareszcie mi to zagrało
dziękuję.
witam
hej Marcin,
gdzie można znaleźć następne części??
Fabio
Dodaj nową odpowiedź