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"
nareszcie mi to zagrało
dziękuję.
witam
hej Marcin,
gdzie można znaleźć następne części??
Fabio
Dodaj nową odpowiedź