Na wstępie postaram się wyjaśnić, dlaczego obiektem naszego zainteresowania będzie napisanie własnego frameworka. Pisząc różnorodne aplikacje, wyrabiamy sobie pewne nawyki programistyczne - dotyczy to zarówno nazewnictwa plików, budowania struktury katalogów czy sposobu przechowywania danych konfiguracyjnych. Przystępując do pracy nad każdym nowym projektem, niejako automatycznie sięgamy do tych samych rozwiązań, przez co możemy wyodrębnić je i stworzyć na ich podstawie tzw. szkielet aplikacji. Dopełnienie go odpowiednim dla danego projektu kodem, pozwoli na stworzenie pełnej aplikacji. Tak oto w kilku słowach można najprościej zdefiniować pojęcie frameworku.
Wielu w tym miejscu mogłoby zadać pytanie - po co pisać własny framework, jeżeli dostępnych mamy wiele darmowych frameworków, napisanych przez zespoły programistów i przetestowanych przez społeczności ich używających? Odpowiedź na to pytanie jest prosta - nie będziemy tutaj wyważać otwartych drzwi. Celem tego kursu jest przedstawienie pewnej koncepcji programowania obiektowego w języku PHP 5, jak i również m.in. zapoznanie czytelnika z wzorcami projektowymi. Kurs ten należy traktować wyłącznie jako praktyczny trening. Po tym dość długim wstępie, czas najwyższy przejść do konkretów.
Przygotowujemy warsztat pracy
Zanim przejdziemy do implementacji, zajmiemy się kilkoma, czysto technicznymi sprawami:- strukturą katalogów i nazewnictwem plików,
- przygotowaniem wirtualnego hosta do testowania kodu,

Katalog /framework jest naszym katalogiem nadrzędnym, zawiera dwa podkatalogi - apps oraz core. W pierwszym z nich będą przechowywane katalogi aplikacji, tworzonych na bazie frameworka (na powyższym obrazku mamy przedstawioną strukturę katalogów przykładowego projektu - first_app). Każda aplikacja zawierać będzie katalogi:
- cache (tutaj będą przechowywane pliki cache),
- config (pliki konfiguracyjne),
- controllers (kontrolery aplikacji),
- models (modele aplikacji),
- views (widoki aplikacji),
- web (pliki dostępne z poziomu przeglądarki),
- templates (pliki szablonów)
Mając przygotowaną strukturę katalogów, zajmiemy się stworzeniem wirtualnego hosta. Zakładam, że serwer Apache jest już zainstalowany na komputerze czytelnika, przejdziemy zatem do opisania procedury tworzenia wirtualnego hosta (jeżeli serwer Apache nie jest jeszcze zainstalowany, odsyłam do źródeł lub skorzystania z ulubionej wyszukiwarki). Jako użytkownik linuxa, opiszę metodę dla tego systemu, a dokładniej - dystrybucji Ubuntu:
Krok 1: tworzymy plik [nazwa_wirtualnego_hosta].conf w lokalizacji /etc/apache2/sites-available (w naszym przykładzie utworzymy host o nazwie front-framework):
# sudo vim /etc/apache2/sites-available/front-framework.confKrok 2: uzupełniamy utworzony plik konfiguracyjny:
<VirtualHost *>
ServerName front-framework
DocumentRoot /home/simons/framework/apps/firs_app/web/frontend
</VirtualHost>
Uwaga: w sekcji DocumentRoot podajemy poprawną, lokalną ścieżkę!
Krok 3: ładujemy plik konfiguracyjny:
# sudo a2ensite front-framework.confKrok 4: dodajemy wirtualnego hosta do pliku /etc/hosts
# sudo vim /etc/hostsDo pliku dodajemy na końcu:
127.0.0.1 front-frameworkZapisujemy i zamykamy plik.
Krok 5: przeładowujemy Apache:
# sudo /etc/init.d/apache2 reloadPo przejściu przez te 5 kroków możemy cieszyć się nowo utworzonym hostem - wpisujemy w przeglądarce adres
http://front-framework, aby sprawdzić poprawność konfiguracji. Jeżeli wszystko poszło dobrze, w oknie przeglądarki powinniśmy zobaczyć pusty listing plików katalogu frontend.Podsumowanie
We wstępie do kursu udało nam się przygotować dwie, bardzo istotne rzeczy - strukturę katalogów oraz wirtualnego hosta, na którym będziemy testować kod.Na koniec jeszcze kilka słów wyjaśniających naszą strukturę katalogów. Jednym z głównych czynników, jakie kierowały mną przy jej ustalaniu było bezpieczeństwo. Zwróćmy uwagę, że z poziomu przeglądarki użytkownicy nie będą mieć możliwości odczytania zawartości katalogów innych niż ten, na który wskazuje domena - w naszym przykładzie jest katalog frontend. Dzięki temu pliki konfiguracyjne i źródłowe pozostają bezpieczne.
Drugą rzeczą, na którą chciałbym zwrócić uwagę, to struktura katalogu apps. Znajdować się w nim będą katalogi aplikacji, ułożone w odpowiednich katalogach. Dzięki temu rozwiązaniu, wiele aplikacji będzie mogło współdzielić pliki źródłowe naszego frameworka w ramach jednego serwera. Dla przykładu wyobraźmy sobie, że napisaliśmy 10 aplikacji na bazie frameworka. Wszystkie aplikacje przechowywane będą na jednym serwerze, zatem struktura katalogu apps będzie prezentować się następująco:
apps/
app_1/
app_2/
app_3/
...
app10/
Jak łatwo zauważyć, nie trzeba będzie dziesięciokrotnie kopiować katalogu core/ z plikami źródłowymi frameworka. Zyskujemy dzięki temu jeszcze jedną ważną rzecz - w przypadku wprowadzenia istotnych zmian w kodzie źródłowym, zmiany będą widoczne od razu we wszystkich aplikacjach współdzielących kod.
W następnym odcinku zajmiemy się już implementacją podstawowych elementów frameworka. Skupimy naszą uwagę na programowaniu obiektowym, wykorzystamy możliwości jakie daje nam PHP w wersji piątej. Do zobaczenia wkrótce!












0 komentarze:
Prześlij komentarz