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
frameworkzawiera 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
yiicw 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
siteoraz akcjęcontact(metodaactionContactw/wwwroot/blog/protected/controllers/SiteController.php); - Aplikacja tworzy kontroler
sitepod postacią instancjiSiteControllera następnie uruchamia go; - Instancja kontrolera
SiteControllerwykonuje akcjęcontactpoprzez wywołanie metody kontroleraactionContact(); - Metoda
actionContactgeneruje internaucie widok o nazwiecontact. Wewnętrznie dzieje się to poprzez załączenie pliku widoku/wwwroot/blog/protected/views/site/contact.phpi osadzeniu wyniku w pliku układu/wwwroot/blog/protected/views/layouts/column1.php.