Yii の試運転 ==================== このセクションでは、出発点となるスケルトンアプリケーションを作る方法を解説します。 説明を簡単にするために、ウェブサーバのドキュメントルートを `/wwwroot` であると仮定し、対応する URL を `http://www.example.com/` であるとします。 Yii のインストール -------------- まずはじめに Yii Framework をインストールします。 Yii のリリースファイル(バージョン 1.1.1以上)を [www.yiiframework.com](http://www.yiiframework.com/download) から取得し、`/wwwroot/yii` ディレクトリに解凍します。 念のために、`/wwwroot/yii/framework` というディレクトリが存在することをもう一度確認してください。 > Tip|ヒント: Yii framework はファイルシステムのどの場所にでもインストールすることが出来ます。ウェブフォルダ(ドキュメントルート)の下である必要はありません。Yii の `framework` ディレクトリはすべてのフレームワークコードを含んでおり、このディレクトリが Yii アプリケーションの配布に必要な唯一のフレームワークディレクトリです。インストールした単一の Yii を複数の Yii アプリケーションから利用することが可能です。 Yii をインストールした後、ブラウザのウィンドウを開いて、`http://www.example.com/yii/requirements/index.php` という URL にアクセスしてください。 そうすると、Yii のリリースに含まれる必要条件チェッカが表示されます。 ブログアプリケーションのためには、Yii が必要とする最小限の要求に加えて、SQLite データベースにアクセスするために、`pdo` と `pdo_sqlite` という二つの PHP 拡張が有効である必要があります。 スケルトンアプリケーションを作る ----------------------------- 次に `yiic` ツールを使って `/wwwroot/blog` ディレクトリにスケルトンアプリケーションを作ります。 `yiic` ツールは Yii のリリースに含まれるコマンドラインツールです。 このツールを使ってコードを生成して、反復的コーディング作業をいくらか軽減することができます。 コマンドプロンプトを開き、以下のコマンドを実行します: ~~~ % /wwwroot/yii/framework/yiic webapp /wwwroot/blog Create a Web application under '/wwwroot/blog'? [Yes|No]y ...... ~~~ > Tip|ヒント: 上で示したように `yiic` ツールを使うには、CLI PHP プログラムにパスが通っていなければなりません。そうでない場合は、次のようにすることでコマンドを利用できます: > >~~~ > path/to/php /wwwroot/yii/framework/yiic.php webapp /wwwroot/blog >~~~ 作ったばかりのアプリケーションを試してみるには、ブラウザを開いて、`http://www.example.com/blog/index.php` にアクセスします。 スケルトンアプリケーションが完全に機能する4つのページを既にそなえているのが分る筈です。 すなわち、ホーム、アバウト(について)、コンタクト、ログイン という4つのページです。 以下では、このスケルトンアプリケーションの中身について簡単に説明します。 ###エントリスクリプト まず、`/wwwroot/blog/index.php` という [エントリスクリプト](http://www.yiiframework.com/doc/guide/ja/basics.entry) のファイルがあります。これは以下のような内容です: ~~~ [php] run(); ~~~ これは、ウェブユーザが直接にアクセスできる唯一のスクリプトです。 エントリスクリプトは最初に Yii ブートストラップファイル `yii.php` を読み込みます。次に、指定した設定で [アプリケーション](http://www.yiiframework.com/doc/guide/ja/basics.application) インスタンスを作成して、アプリケーションを実行します。 ###ベースアプリケーションディレクトリ 次に、`/wwwroot/blog/protected` という [アプリケーションベースディレクトリ](http://www.yiiframework.com/doc/guide/ja/basics.application#sec-3) があります。 これから作成するコードとデータのほとんどがこのディレクトリ以下に配置されます。 このディレクトリはウェブユーザのアクセスから保護されなければなりません。 [Apache httpd ウェブサーバ](http://httpd.apache.org/) を使っているなら、以下のような `.htaccess` ファイルをこのディレクトリに置きます: ~~~ deny from all ~~~ 他のウェブサーバを使っている場合は、ウェブユーザのアクセスからディレクトリを保護する方法について、対応するマニュアルを参照してください。 アプリケーションのワークフロー -------------------- Yii がどのように動くかを理解しやすいように、ユーザがコンタクトページにアクセスした際のスケルトンアプリケーションの主なワークフローを解説します: 0. ユーザが URL `http://www.example.com/blog/index.php?r=site/contact` をリクエストします。 1. リクエストを処理するために、[エントリスクリプト](http://www.yiiframework.com/doc/guide/ja/basics.entry) がウェブサーバにより実行されます。 2. [アプリケーション](http://www.yiiframework.com/doc/guide/ja/basics.application) インスタンスが作成され、アプリケーション初期構成ファイル `/wwwroot/blog/protected/config/main.php` で指定された初期プロパティ値が設定されます。 3. アプリケーションは [コントローラ](http://www.yiiframework.com/doc/guide/ja/basics.controller) と [コントローラアクション](http://www.yiiframework.com/doc/guide/ja/basics.controller#sec-4) にリクエストを解決します。コンタクトページへのリクエストは、`site` コントローラと `contact` アクションに解決されます (`/wwwroot/blog/protected/controllers/SiteController.php` 中の `actionContact` メソッド)。 4. アプリケーションは `site` コントローラを `SiteController` のインスタンスとして作成し、実行します。 5. `SiteController` インスタンスは自身の `actionContact()` メソッドを呼ぶことで `contact` アクションを実行します。 6. `actionContact` メソッドは `contact` という名前の [ビュー](http://www.yiiframework.com/doc/guide/ja/basics.view) をレンダリングし、ウェブユーザに提示します。内部的には、ビューファイル `/wwwroot/blog/protected/views/site/contact.php` を読み込み、[レイアウト](http://www.yiiframework.com/doc/guide/ja/basics.view#sec-2) ファイル `/wwwroot/blog/protected/views/layouts/column1.php` にその結果を埋め込むことで、レンダリングが達成されます。