Kohana Framework: wstęp do programowania

Kohana jest chyba jednym z kilku mniejszych frameworków PHP, które każdy powinien poznać. Dzięki swej prostocie świetnie nadaje się jako podstawy do nauki zaawansowanego programowania obiektowego z użyciem wzorca MVC. Dzisiaj napiszemy bardzo prosty system CMS oparty o bazę danych MySQL z użyciem PHP 5.4 oraz zestawu wizualnego Twitter Bootstrap w najnowszej odsłonie.

Jest wiele wrogów tego frameworka, jedni zarzucają brak przestrzeni nazw, inni wytykają słabą wydajność Kohany lecz tak naprawdę jest świetną podstawą do zrozumienia wzorca MVC oraz stawiania pierwszych kroków w PHP. Dzięki brakom i ograniczeniom jest zwinna i łatwa do zrozumienia.

Pozwolę sobie pominąć początek zabawy oraz wstępu do OOP gdyż chcąc programować teorię powinniśmy już mieć opanowaną. Czas na praktykę!

Skąd pobrać Kohana Framework

Najprościej jest udać się na oficjalną stronę Internetową projektu i kliknąć przycisk „Download” bezpośrednio z prawej strony naszego ekranu. W ten sposób pobierzemy najnowsze, stabilne wydanie Kohana Framework bezpośrednio z repozytorium Github.

Instalacja Frameworka w katalogu publicznym

Przystepując do tego kroku powinniście mieć już zainstalowany serwer HTTP, interpreter PHP5 oraz serwer baz danych MySQL. Obstawiam, że to już macie za sobą i przygotowaliście katalog publiczny dla projektu, do którego jest dostęp przez przeglądarkę pod adresem http://localhost/.

Jeśli tak to cała instalacja sprowadza się do wypakowania pobranego wcześniej archiwum następnie skopiowania całej zawartości folderu kohana i wklejenie go do naszego przygotowanego folderu publicznego. W moim przypadku jest to /var/www.

Wchodzimy teraz na lokalny adres naszego projektu http://localhost/ i jeśli naszym oczom ukazał się pomyślny test instalacyjny jak na poniższym obrazku to znaczy, że poprawnie umieściliśmy nasz framework w katalogu roboczym.

Pierwsze kroki

Pierwszą czynnością, którą zawsze robię jest uporządkowanie sobie katalogu roboczego oraz usunięcie niepotrzebnych nam plików. Dla poniższego artykułu pozwoliłem sobie usunąć wszystko poza głównymi plikami frameworka pozostawiając ostatecznie 3 katalogi oraz 2 pliki:

  • /application/
  • /modules/
  • /system/
  • example.htaccess
  • index.php

Następnym krokiem jest zmiana nazwy pliku example.htaccess na .htaccess (w tym pliku trzymane są reguły modułu rewrite oraz zmienne środowiskowe, które posłużą nam do operowania aplikacją).

Jeśli już zrobiliśmy powyższe kroki uporządkujmy teraz katalogi frameworka wrzucając je wszystkie do folderu app co pozwoli nam lepiej zadbać o ład i porządek w naszej aplikacji. Tak więc tworzymy w głównym katalogu aplikacji (tam gdzie jest index.php) katalog app, następnie przerzucamy do niego 3 foldery: application, modules, system.

Zmiana struktury domyślnej katalogów frameworka wiąże się z edycją ścieżek dostępu do tych katalogów. W tym celu otwieramy plik index.php a następnie nadpisujemy go poniższą zawartością:

Zmiany, które zostały wprowadzone to aktualizacja ścieżek do katalogów application, modules oraz system dodając zmienną $app z aktualną ścieżką. W przyszłości jeśli chcielibyśmy wyrzucić framework poza katalog publiczny (wyżej niż index.php) wystarczy dodać na początku wartości zmiennej $app prefiks katalogu wyżej czyli „../”.

Po tak przeprowadzonym porządku powinniśmy ujrzeć na ekranie triumfujący napis „Hello, world!”. Oznacza to, ze przeprowadziliśmy wszystkie kroki prawidłowo.

Konfiguracja aplikacji

Podstawowa reorganizacja struktury za nami, czas na konfigurację naszej przyszłej aplikacji. W tym celu otwieramy plik /app/application/bootstrap.php w którym znajdują się wpisy konfiguracyjne dla wielu elementów aplikacji, tj. wyświetlanie błędów, routing, moduły oraz wiele więcej.

Na początku warto zdefiniować środowisko programistyczne (ang. programming environment) poprzez dodanie zmiennej środowiskowej na początku pliku .htaccess

Konfiguracja środowiska została zakończona, ponieważ w pliku bootstrap znajduje się już ustanowienie środowiska programistycznego na podstawie zmiennej środowiskowej z pliku .htaccess.

Idąc do przodu odnajdujemy linię:

i zmieniamy jej wartość dla naszej strefy czasowej:

Następnie odnajdujemy linię określającą sposób identyfikacji języka:

oraz zamieniamy ją na:

Teraz należy ustawić domyślny język naszej aplikacji, w tym celu odnajdujemy linię

i zamieniamy ją na

Konfiguracja lokalizacji, strefy czasowej oraz domyślnego języka za nami. Czas teraz przejść niżej do konfiguracji inicjatora frameworka.
Odnjdujemy blok kodu zaczynający się od Kohana::init(array( a następnie nadpisujemy go całego naszą konfiguracją:

W inicjatorze mamy kilka innych opcji do wyboru między innymi, kodowanie znaków, wyświetlanie błędów, cache, profilowanie etc.
My jednak pozostawimy konfigurację z domyślnymi wartościami, zmieniając tylko dwa parametry odpowiadające za zdefiniowanie głównej ścieżki projektu oraz plik indeksu. Domyślnie jest nim index.php, lecz my by uzyskać efekt „ładnych” linków wyłączyliśmy go unikając tym samym adresów w postaci /index.php/strony/o-mnie.

Moduły

Moduły są odrębnymi częściami frameworka służące do jego rozszerzenia. W pliku /app/application/bootstrap.php odnajdujemy blok kodu rozpoczynający się od

Jest to tablica inicjatora modułów zawierające spis wszystkich włączonych modułów, znajdujących się w katalogu /app/modules/.
Domyślnie jak widzimy wszystkie moduły są wyłączone.

W podstawowej wersji naszej aplikacji będziemy potrzebowali dokładnie trzech z nich.

Pierwszym z nich jest auth odpowiadający za autoryzację użytkownika, kolejnym database który udostępnia nam cały wachlarz możliwości związanych ze składowaniem danych oraz ostatni orm, który służy do relacyjnego mapowania obiektów na tabelę w bazie danych.

Routing

Na tym etapie musimy sobie założyć nasze cele odnośnie funkcjonalności aplikacji, którą będziemy pisali. Założeniem tego długiego wpisu będzie budowa aplikacji do samodzielnego zarządzania własną stroną Internetową. Wraz z kolejnymi odsłonami artykułów z serii Kohana będziemy rozbudowywać naszą aplikację o kolejne elementy. Lista funkcji do wykonania:

  • System zarządzania treścią CMS
  • Proste aktualności
  • Rejestracja i logowanie użytkownika (autoryzacja)
  • System wiadomości wewnętrznych
  • Własna galeria
  • Panel administratora

Zacznijmy więc od zdefiniowania routingu naszej aplikacji. Zaplanowałem, że chciałbym mieć bardzo ładne adresy url w postaci www.mojastrona.pl/oferta lub www.mojastrona.pl/oferta/renowacja-wnetrz w przypadku gdy dana strona posiada pod sobą kolejne podstrony – dzieci.

Dla aktualności będzie to standardowo: /aktualnosci/{ID}/{tytul-wpisu-w-postaci-slug} oraz /aktualnosci/kategoria/{nazwa}.
Dla autoryzacji użytkownika stworzymy kontroler o nazwie auth, a adresacja będzie następująca: /auth/logowanie oraz /auth/rejestracja.

Zdefiniujmy pierwszy element routingu dla podstron CMS w postaci catch-all, czyli wszystkie żądania przekaż do kontrolera CMS oraz akcji index.

 

Stwórzmy następnie kontroler o nazwie Cms.php w katalogu /app/application/classes/Controller/Cms.php

Od teraz, wszystko co zostanie wpisane w adresie zostanie wyświetlone na ekranie:

Pokaże to Wam zasadę działania routingu.

Stwórzmy teraz strukturę bazy dla naszych stron

Nastał czas, w którym musimy zdecydować czy będziemy używać QueryBuildera i każdą akcję modelu będziemy pisać ręcznie składając zapytania czy pójdziemy o krok na przód i stworzymy Model dziedziczący po module ORM (relacyjne mapowanie obiektów).

Dla naszej aplikacji lepszym rozwiązaniem będzie wybór ORM, dlatego stwórzmy model Page.php w katalogu /app/application/classes/Model/Page.php

W modelu utworzyliśmy od razu funkcję generującą slug czyli adres strony na podstawie jej tytułu. Posłuży on nam również do identyfikacji parametrów routingu w poszukiwaniu pasującego elementu bazy danych.

Podsumowanie

Podsumowując ten wpis, utworzyliśmy podstawę do pracy nad naszą aplikacją do zarządzania treścią strony. W kolejnym artykule zajmiemy się podpięciem podstawowego layoutu strony, systemem szablonów oraz stworzymy pierwsze strony (podstrony).

Zapraszam do śledzenia mnie na Google+ oraz Twitterze.
Źródła naszej aplikacji z tutoriala znaleźć można w serwisie GitHub kliknij aby zobaczyć

Programista, administrator - miłośnik nowych technologii. Jak każdy fachowiec w branży nie oprę się porannej kawie w towarzystwie świeżej prasy. Hobbystycznie fotografuję, psuję, naprawiam, lutuję. Czego nie lubię? Nieskromnych ludzi i brzydkiego kodu.

Send this to a friend

webmastah.weekly
Cotygodniowa porcja linków ze świata WEBDEV BEZ spamu, TYLKO samo mięcho!
Zobacz poprzednie wydania. Dołącz do 2 tysięcy webdeveloperów!
HTML5, CSS3, JS (React, Angular, Ember, Vue), PHP, SQL