Jazda próbna z Yii
W części tej napiszemy jak utworzyć szkielet aplikacji, który będzie stanowić nasz punkt startowy. Dla uproszczenia, zakładamy, że główny katalog naszego serwera to /wwwroot
a odpowiadający mu adres URL to http://www.example.com/
.
Instalacja Yii
Na samym początku zainstalujemy framework Yii. W tym celu pobierz plik z wydaniem Yii (wersja 1.1.1 lub nowsze) spod adresu www.yiiframework.com i rozpakuj go do katalogu /wwwroot/yii
. Upewnij się jeszcze raz, że istnieje folder /wwwroot/yii/framework
.
Wskazówka: framework Yii może zostać zainstalowany w dowolnym miejscu systemu plików, niekoniecznie w folderze sieci Web. Jego katalog
framework
zawiera cały kod frameworku i jest jedynym wymaganym folderem frameworku podczas wdrażania aplikacji napisanej w Yii. Pojedyncza instalacja Yii może być używana przez wiele aplikacji.
Po zainstalowaniu Yii, otwórz okno przeglądarki i wpisz adres URL http://www.example.com/yii/requirements/index.php
. Pokaże on dostarczoną wraz z Yii stronę pozwalającą sprawdzić wymagania. Dla naszego blogu, poza minimalnymi wymaganiami stawianymi Yii, potrzebujemy włączyć rozszerzenia PHP pdo
oraz pdo_sqlite
by móc używać bazy danych SQLite.
Tworzenie szkieletu aplikacji
Następnie przy użyciu narzędzia yiic
utworzymy szkielet aplikacji w katalogu /wwwroot/blog
. Narzędzie yiic
jest narzędziem wiersza poleceń, dostarczonym wraz z wydaniem Yii. Może zostać użyte do wygenerowania kodu aby ograniczyć wykonywanie pewnych powtarzających się zadań.
Otwórz okno wiersza poleceń oraz wywołaj następującą komendę:
% /wwwroot/yii/framework/yiic webapp /wwwroot/blog Create a Web application under '/wwwroot/blog'? [Yes|No]y ......
Wskazówka: W celu wykorzystania narzędzia
yiic
w sposób pokazany powyżej program CLI PHP musi się znajdować w ścieżce poleceń. Jeśli tak nie jest, następująca komenda może zostać użyta w miejsce powyższej:ścieżka/do/php /wwwroot/yii/framework/yiic.php webapp /wwwroot/blog
Aby wypróbować aplikację, którą właśnie stworzyliśmy, otwórz przeglądarkę i przejdź do adresu http://www.example.com/blog/index.php
. Powinniśmy zobaczyć, że nasza szkieletowa aplikacja posiada już cztery w pełni funkcjonalne strony: stronę domową, stronę o nas, stronę kontaktową oraz stronę logowania.
W dalszej części, pokrótce opiszemy co znajduje się w właśnie stworzonym szkielecie aplikacji.
Skrypt wejściowy
Mamy plik skryptu wejściowego /wwwroot/blog/index.php
, który posiada następującą zawartość:
$yii='/wwwroot/framework/yii.php'; $config=dirname(__FILE__).'/protected/config/main.php'; // usuń następującą linię jeśli pracujesz w trybie produkcyjnym defined('YII_DEBUG') or define('YII_DEBUG',true); require_once($yii); Yii::createWebApplication($config)->run();
Jest to jedyny skrypt, do którego internauci mają dostęp. Skrypt najpierw załącza plik inicjalizacyjny yii.php
. Następnie tworzy instancję aplikacji z określoną konfiguracją i uruchamia aplikację.
Główny katalog aplikacji
Mamy również główny katalog aplikacji /wwwroot/blog/protected
. Większość naszego kodu i danych znajdzie się w tym katalogu, dlatego więc nie powinien on być udostępniony dla internautów. Dla serwera httpd Apache, umieszczamy w tym miejscu plik .htaccess
z następującą zawartością:
deny from all
Dla pozostałych serwerów informacje o tym jak ochronić katalog przed dostępem z zewnątrz przez internautów można znaleźć w odpowiadających im podręcznikach.
Działanie aplikacji (ang. Application Workflow)
Aby pomóc zrozumieć w jaki sposób Yii działa, opiszemy ogólnie przebieg działania aplikacji w naszym szkielecie aplikacji podczas gdy użytkownik żąda dostępu do strony kontaktowej:
- Użytkownik zażądał adresu URL
http://www.example.com/blog/index.php?r=site/contact
; - Skrypt wejściowy jest wykonywany przez serwer sieciowy aby przetworzyć żądanie.
- Instancja aplikacji jest tworzona i konfigurowana początkowymi wartościami określonymi w pliku konfiguracyjnym aplikacji
/wwwroot/blog/protected/config/main.php
; - Aplikacja dzieli żądanie na kontroler oraz akcję kontrolera. Dla żądania strony kontaktowej, aplikacja dzieli żądanie na kontroler
site
oraz akcjęcontact
(metodaactionContact
w/wwwroot/blog/protected/controllers/SiteController.php
); - Aplikacja tworzy kontroler
site
pod postacią instancjiSiteController
a następnie uruchamia go; - Instancja kontrolera
SiteController
wykonuje akcjęcontact
poprzez wywołanie metody kontroleraactionContact()
; - Metoda
actionContact
generuje internaucie widok o nazwiecontact
. Wewnętrznie dzieje się to poprzez załączenie pliku widoku/wwwroot/blog/protected/views/site/contact.php
i osadzeniu wyniku w pliku układu/wwwroot/blog/protected/views/layouts/column1.php
.