4.2. さあ、はじめましょう
前のページ | 第4章 Zend_Controller | 次のページ

## 4.2. さあ、はじめましょう

### 4.2.1. 導入

`Zend_Controller` システムは、拡張性を考慮して作成されています。 拡張方法としては、既存のクラスを継承する以外にも `Zend_Controller_Router_Interface` および `Zend_Controller_Dispatcher_Interface` を実装した新しいクラスを作成する方法があります。

### 4.2.2. サーバの設定

Zend_Controller は、クリーンな (クエリ文字列をほとんど使用しない) URI をサポートするように作成されています。この推奨設定を使用するためには、ウェブサーバが URI の書き換えをサポートしており、全てのリクエストを単一のファイル (ここでは "index.php" とします。これは単に `Zend_Controller_Front` を呼び出すだけです) にリダイレクトできなければなりません。 Apache では、この機能はオプションのモジュール mod_rewrite でサポートされています。

サーバを設定するための第一歩は、まずきちんとインストールして mod_rewrite を有効にすることです。次に、.htaccess と index.php の 2 つのファイルをドキュメントルートに配置します。 .htaccess は Apache が使用するファイルで、 すべてのリクエストを index.php にリダイレクトさせるための mod_rewrite のルールをここに記述します。開発中なら、 特定の拡張子のファイル以外をすべて index.php にリダイレクトさせるような単純なルールを設定しておけばよいでしょう。 例えばこのようになります。

    RewriteEngine on
    RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

上の例では、指定した拡張子以外のすべてのファイルに対するリクエストが index.php に渡されます。開発中にはこれで十分ですが、 実運用環境では、リダイレクトしないディレクトリを指定するなどの記述が必要でしょう。

### 4.2.3. 起動用ファイル

.htaccess ファイルの設定が終われば、次に `index.php` という新しいファイルを作成します。これが起動用ファイルとなります。 index.php は、単に Zend_Controller_Front を起動するためだけに使用します。 Zend_Controller_Front はドキュメントルートの外に配置します。

| 注意
ドキュメントルートに配置する PHP ファイルは、 この起動用ファイルだけにしておくべきです。

セキュリティ上、他の PHP ファイルはウェブサーバからアクセスできない場所 (ドキュメントルートの配下ではない場所) に置くことを Zend として強く推奨します。 共有ホスティング環境など思い通りにいかない環境もあることは理解しますが、 可能な限り推奨設定に従うようにしてください。

Zend_Controller_Front を起動するための起動用ファイル `index.php` をドキュメントルートに作成します。

    <?php

    require_once 'Zend/Controller/Front.php';

    Zend_Controller_Front::run('/path/to/your/controllers');

    ?>

`/path/to/your/controllers` の部分に関しては、次の節を参照ください。 `README.txt` に記述されているように、 Zend Framework ライブラリのディレクトリは `include_path` に置かなければなりません。`include_path` が `php.ini` で設定されていない場合は、このファイルで `require_once()` する前に `set_include_path()` をコールして設定することができます。

| 注意
mod_rewrite を必要としない手法については現在調査中です。 mod_rewrite の機能を使用する方法と使用しない方法の両方を提示できるようにするつもりです。 また、この仕組みは決して Apache や mod_rewrite 特有の機能にとらわれたものではないことにも注意しましょう。 同じようなリダイレクトの仕組みを持っているウェブサーバでも使用可能です。

### 4.2.4. ディレクトリ構造

Zend Framework で構築したウェブサイトは、 共通のディレクトリ構造を共有することを推奨します。 すべてとは言いませんが、できるだけこの構造にあわせるようにしましょう。 そうすることで、Zend Framework の規約に慣れている人々にとって、 あなたのコードがより理解しやすいものとなります。

推奨する構造は、(Zend およびその他の) ライブラリ用のディレクトリと アプリケーションのディレクトリを別に分けるものです。

    /application
      /models
      /views
      /controllers
    /document_root
      /images
      /styles
      .htaccess
      index.php
    /library
      /Zend

| 注意
この節は未完成です。現在作成中であり、今後変わる可能性があります。

### 4.2.5. IndexController

`IndexController` という名前のコントローラを、 すべてのサイトで定義しなければなりません。 URI にコントローラが指定されなかった場合、例えば次のような URI が指定された場合に、このコントローラが使用されます。

    http://framework.zend.com/

`IndexController` クラスは、コントローラのディレクトリにある `IndexController.php` という名前のファイルで定義されていなければなりません。 `IndexController` は、`Zend_Controller_Action` を継承しなければなりません。`IndexController` の例は、このようになります。

    <?php

    require_once 'Zend/Controller/Action.php';

    class IndexController extends Zend_Controller_Action
    {
    	public function indexAction()
    	{
    		echo 'IndexController からこんにちは';
    	}

    	public function noRouteAction()
    	{
    		$this->_redirect('/');
    	}
    }

    ?>

| 注意
この節は未完成です。現在作成中であり、今後変わる可能性があります。

前のページ | 上に戻る | 次のページ
第4章 Zend_Controller | ホーム | 4.3. サブクラス化