このチュートリアルでは、Yiiを用いてブログデモのようなブログアプリケーションをどのように開発するのかを説明します。 開発のステップを順を追って詳細に解説してあります。
ここで述べている内容は、他のウェブアプリケーションの開発においても有用でしょう。
Yiiガイドや、クラスリファレンスの補足として、 このチュートリアルでは、Yiiの実践的な使用法を紹介するのが目的です。
このチュートリアルの読者は、前もってYiiについて知っている必要はありません。
しかし、オブジェクト指向プログラミングと、データベースについての基礎知識があれば、このチュートリアルを理解するよい助けになるでしょう。
このチュートリアルは、the Terms of Yii Documentationのもとでリリースされます。
このセクションでは、出発点となるスケルトンアプリケーションを作る方法を解説します。
説明を簡単にするために、ウェブサーバのドキュメントルートを /wwwroot であると仮定し、対応するURLを http://www.example.com/であるとします。
まずはじめにYiiFrameworkをインストールします。
Yiiのリリースファイルをwww.yiiframework.comから取得し、
/wwwroot/yiiディレクトリに解凍します。/wwwroot/yii/frameworkというディレクトリが存在することを確認してください。
Yiiのインストール後、ブラウザを開きhttp://www.example.com/yii/requirements/index.phpにアクセスしてください。
Yiiのリリースに含まれる、動作環境チェッカが表示されます。
ウェブサーバとPHPがYiiを動作させるための最小条件を満たしていることを確認してください。
特にpdo拡張とpdo_sqlite拡張はこれから作成するブログアプリケーションで、SQLiteにアクセスするために必要となります。
次に、yiicツールを使って、/wwwroot/blogディレクトリにスケルトンアプリケーションを作ります。
yiicはYiiのリリースに含まれるコマンドラインツールです。
このツールはいくつかのタスクでコードを生成するのに使用します。
コマンドプロンプトを開き、以下のコマンドを実行します。
% /wwwroot/yii/framework/yiic webapp /wwwroot/blog
Create a Web application under '/wwwroot/blog'? [Yes|No]y
......
作ったばかりのアプリケーションを試してみるには、ブラウザを開き、http://www.example.com/blog/index.phpにアクセスします。
三つの機能を持ったアプリケーションが表示されるでしょう。
ホームページ、コンタクトページ、そしてログインページです。
エントリスクリプトは/wwwroot/blog/index.phpです。
その内容は以下のようになっています。
<?php
$yii='/wwwroot/framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';
// remove the following line when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);
require_once($yii);
Yii::createWebApplication($config)->run();
このエントリスクリプトは、ウェブユーザがアクセスできる唯一のファイルです。
まずYiiブートストラップファイルのyii.phpが読み込まれ、指定した設定でアプリケーションインスタンスが作成されたのち、実行されます。
/wwwroot/blog/protectedがアプリケーションのベースディレクトリです。
これから作成するコードとデータのほとんどがここに配置されます。
このディレクトリはユーザのアクセスから保護されなければなりません。
Apacheを使っているなら、以下のような.htaccessファイルを置くことでこれを達成できます。
他のウェブサーバについてはマニュアルを参照してください。
Yiiがどのように動くか、理解するのを助けるために、スケルトンアプリケーションの主なワークフローを解説します。
ユーザがコンタクトページにアクセスしたとき:
その結果がレイアウトファイル、/wwwroot/blog/protected/views/layouts/main.phpに埋め込まれます。
これから作成するブログシステムは、シングルユーザシステムです。 システムのオーナは以下のアクションを行えるものとします。
オーナ以外のユーザはすべてゲストです。ゲストは以下のアクションを行えるものとします。
このシステムの追加要求は以下のとおりです。
要求分析によると、ブログアプリケーションには4つのテーブルが必要と考えられます。
User, Post, Comment
および
Tag
です。
User
はユーザ名、パスワードを含むユーザ情報を格納します。
Post
は記事情報を格納します。主に以下のカラムから成ります
title:
必須、記事のタイトル。
content:
必須、記事の本文。Markdown formatで記述する。
status:
必須、記事のステータス(公開状態)。以下のいずれかの値をとる。
draft:
記事は草稿で、公開されていない。
published:
記事は公開されている。
archived:
記事は公開期間を過ぎ、公開されていない。
tags
オプション、カンマ区切りの単語リスト。記事のカテゴリを表す。
Comment
記事へのコメントを格納する。コメントは記事と関連付けられ、主に以下のカラムから成る。
name:
必須、コメント作成者名
email:
必須、作成者のメールアドレス
website:
オプション、ウェブサイトのURL
content:
必須、コメントの内容。Markdown formatで記述する。
status:
必須、コメントのステータス(公開状態)。コメントが承認された(1)もしくは未承認(0)のいずれかの値をとる。
Tag
タグ情報を格納する。記事には複数のタグをつけることができ、おなじくタグも複数の記事につけられる。
Tag
テーブルは主にタグクラウドポートレットで利用され、タグの使用頻度を計算するのに必要になる。
以下のER図がテーブルの構造とリレーションをあらわします。
Post
と
Tag
が多対多の関係であることに注目してください。
PostTag
テーブルを用いて、この多対多の関係を二つの一対多の関係へと分解します。
ER図をSQLステートメントにしたものが、ブログデモに含まれています。このサンプルでは
/wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql
になります。
ブログアプリケーション開発を、以下のマイルストーンに分割します。