0 follower

スキャフォールディング

作成、読み出し、更新、そして削除 (CRUD) は永続性ストレージにおける4つの基本操作です。ブログアプリケーションでは、記事とコメントに対して CRUD 操作を実装することが主なタスクになります。このセクションでは yiic ツールを用いてこのタスクを完了します。 このプロセスはまた スキャフォールディング として知られています。

コマンドプロンプトを開き、以下のコマンドを実行します。

% /wwwroot/yii/framework/yiic shell /wwwroot/blog/index.php
Yii Interactive Tool v1.0
Please type 'help' for help. Type 'exit' to quit.
>> model User
......
>> model Post
......
>> model Tag
......
>> model Comment
......
>> crud Post
......
>> crud Comment
......
>> exit

情報: PHPのインストール状態によっては、コマンドライン(CLI)の PHP コマンドに異なった php.ini を使っていることがあります。 その結果、yiic コマンドを実行する際に、"YiiBase::include(PDO.php): failed to open stream..." もしくは "...could not find driver"といったエラーが発生することがあります。 その場合、以下のようにしてCLI PHPの設定を再チェックしてください。

php -r "phpinfo();"

このコマンドの結果は、使用されている php.ini を表示します。 もし異なった php.ini が使われている場合、以下のコマンドを実行することで正しい php.ini を指定することができます。

php -c php.ini /wwwroot/yii/framework/yiic.php shell /wwwroot/blog/index.php

上記コマンドによって二つのタスクが達成されます。まず一つ目は、 model コマンドによって、 各データベーステーブルに対応する model クラスファイルが生成されます。 二つ目に、 crud コマンドによって、 Post モデルと Comment モデルの CRUD 操作に必要なコードが生成されます。

以下の URL にアクセスすることで生成されたコードをテストすることができます。

http://www.example.com/blog/index.php?r=post
http://www.example.com/blog/index.php?r=comment

自動生成されたコードによる記事とコメントの機能は、それぞれ完全に独立していることに注意してください。 また、新しい記事やコメントを作る際に、 authIdcreateTime といった情報を入力する必要があります。 これらの情報は実際のアプリケーションではプログラムによって設定するべきです。 しかし心配することはありません。次のマイルストーンまでにこれらの問題を解決します。 今のところは、このプロトタイプがほぼすべての機能をそなえていることに、それなりに満足すべきでしょう。

次のマイルストーンへの準備として、生成されたファイルを少し詳しく見てみましょう。 すべてのファイルはr /wwwroot/blog/protected 以下にあります。 説明のため、ファイルをモデルファイル、コントローラファイル、ビューファイルに分類します。

  • モデルファイル:

    • models/User.php ファイルは user クラスを含み、CActiveRecord を継承しています。 このクラスは User テーブルにアクセスするのに使われます。
    • models/Post.php ファイルは Post クラスを含み、CActiveRecord を継承しています。 このクラスは Post テーブルにアクセスするのに使われます。
    • models/Tag.php ファイルは Tag クラスを含み、CActiveRecord を継承しています。 このクラスは Tag テーブルにアクセスするのに使われます。
    • models/Comment.php ファイルは Comment クラスを含み、CActiveRecord を継承しています。 このクラスは Comment テーブルにアクセスするのに使われます。
  • コントローラファイル:

    • controllers/PostController.php ファイルは PostController クラスを含みます。 このコントローラは記事の CRUD 操作を受け持ちます。
    • controllers/CommentController.php ファイルは CommentController クラスを含みます。 このコントローラはコメントの CRUD 操作を受け持ちます。
  • ビューファイル:

    • views/post/create.php ファイルは新しい記事を作る HTML フォームのビューファイルです。
    • views/post/update.php ファイルは記事の更新を行う HTML フォームのビューファイルです。
    • views/post/show.php ファイルは記事の詳細情報を表示するビューファイルです。
    • views/post/list.php ファイルは記事のリストを表示するビューファイルです。
    • views/post/admin.php ファイルは管理コマンドの際に表形式で記事を表示するビューファイルです。
    • views/post/_form.php ファイルは記事情報を集める HTML フォームを表示する部分ビューファイルです。 このファイルは create ビューと update ビューに埋め込まれます。
    • 同様のビューファイル一式がコメント用にも生成されます。

上記ファイルがどう使われるかをよりよく理解するために、ブログアプリケーションで記事の一覧が表示される場合のワークフローを示します。 1. ウェブサーバにより エントリスクリプト が実行され、アプリケーションインスタンスが作成・初期化された後、リクエストを処理します。 2. アプリケーションは PostController のインスタンスを作成し、実行します。 3. PostController インスタンスは要求された list アクションを、 actionList() メソッドを呼ぶことで実行します。 4. actionList() メソッドはデータベースに問い合わせを行い、最近の記事リストを取り出します。 5. actionList() メソッドは、記事データを list ビューで描画します。