前回の準備編でZend Frameworkの環境は整ったので、ものすごく簡単なアプリケーションから作ってみます。アプリケーションルートを「zf1」とします。
まずはディレクトリ構成。ドキュメントルート直下にフォルダ「zf1」を作成し、その下に「application」を作成します。さらに「application」下に「controllers」「views」を作成、「views」下に「index」を作成してください(結構面倒くさいでしょ?)。フォルダの名前に注意してください。特に「views」は、暗黙で参照される名前ですので、末尾の「s」が抜けていたりなどスペルミスがあるといきなり「ファイルが見つからない」エラーになってしまいます。
※:2014-04-08 説明文中の「applications」を「application」に修正しました。コメントでのご指摘、ありがとうございました。
ドキュメントルートからのツリーは以下のようになります。
まずはURLリライトで必ず呼び出されるようにする「index.php」を作成します。このスクリプトがすべてのリクエストを処理することになります。
zf1の下に以下の内容でindex.phpを作成してください。
<?php // エラーを表示するようにしておく ini_set( 'display_errors', 1 ); // フロントコントローラをrequire require_once 'Zend/Controller/Front.php'; // ルーティング&ディスパッチ開始 Zend_Controller_Front::run( './application/controllers' );
いきなり、あたりまえのように「フロントコントローラ」と言われてもなんのことかわからないかも知れませんので、簡単に説明します。
Zend Frameworkのリクエスト処理は、「フロントコントローラがリクエストを受け付けて、ルータに行き先(ディスパッチ先)を決めさせ、決定した行き先(アクションコントローラ)へディスパッチャを介して処理を委譲する」という流れになります。さらに用語が増えていますが^^;、順次解説していきますので、とりあえずは気にせず「こんな用語があるんだ」程度に考えていてください。
この「フロントコントローラ」が、コード中に記述されている「Zend_Controller_Front」で、このクラスは「Zend/Controller/Front.php」で定義されています。
こうしてクラス名とファイル名を並べてみるとちょっとしたことに気づくかもしれません。Zend Frameworkのクラスとそれを定義するファイル名は単純なルールで決められています。
フロントコントローラ「Zend_Controller_Front」のアンダースコアをパス区切りに置き換え、末尾に「.php」を補うと、インクルードパスを基点にしたファイルパスになります。当然ファイルパスのパスセパレータをアンダースコアに置き換えて「.php」を取り除くとクラス名になります。
もう少し例を見てみましょう。ここではまだ使用しませんが、データベースのテーブルを取り扱うための「Zend_Db_Table」という抽象クラスがありますが、これは「Zend/Db/Table.php」で定義されています。さらにこれの派生元になっている「Zend_Db_Table_Abstract」抽象クラスは「Zend/Db/Table/Abstract.php」で定義されています。
これらのルールを把握していれば、あるクラスを使用するためにrequireしなければならないファイルパスがすぐわかると思います。このルールを適用するために、
セコメントをする