推奨されるプロジェクト・ディレクトリ構造

<project name>/
    application/
        configs/
            application.ini
        controllers/
            helpers/
        forms/
        layouts/
            filters/
            helpers/
            scripts/
        models/
        modules/
        services/
        views/
            filters/
            helpers/
            scripts/
        Bootstrap.php
    data/
        cache/
        indexes/
        locales/
        logs/
        sessions/
        uploads/
    docs/
    library/
    public/
        css/
        images/
        js/
        .htaccess
        index.php
    scripts/
        jobs/
        build/
    temp/
    tests/

以下では、一覧に記載されたディレクトリ毎に利用例を記述します。

  • application/: このディレクトリは、アプリケーションを含みます。 構成や利用されるサービス、及びブートストラップ・ファイルと同様に、 MVCシステムを収納します。

    • configs/: アプリケーション全体の設定のディレクトリ

    • controllers/, models/, views/: これらのディレクトリは、デフォルトのコントローラ、モデルまたは ビューのディレクトリとして用いられます。 アプリケーション・ディレクトリの中にこれらの3つのディレクトリを持たせると、 グローバルな controllers/models/views を持つ モジュラー・プロジェクトと同様に、 単純なプロジェクトを始めるための最良のレイアウトが提供されます。

    • controllers/helpers/: これらのディレクトリにはアクション・ヘルパーを含みます。 アクション・ヘルパーは、デフォルト・モジュールのための "Controller_Helper_"、 または他のモジュールの "<Module>_Controller_Helper" として namespace されます。

    • layouts/: このレイアウト・ディレクトリは、 MVC ベースのレイアウト用です。 Zend_LayoutMVC ベース、 及び非 MVC ベースのレイアウトができるので、 このディレクトリの位置は、レイアウトがコントローラとは1対1の関係ではなく、 views/ 内のテンプレートから独立していることを反映します。

    • modules/: モジュールにより、開発者は 一組の関連したコントローラを論理的に系統化されたグループに分類できます。 モジュール・ディレクトリ配下の構造は、 アプリケーション・ディレクトリ配下の構造に似ています。

    • services/: このディレクトリは、 アプリケーションによって、 またはモデルのためのサービス・レイヤ を実装するために提供される、 アプリケーションに依存したウェブ・サービス・ファイルのためのものです。

    • Bootstrap.php: このファイルはアプリケーションのためのエントリ・ポイントで、 Zend_Application_Bootstrap_Bootstrapper を実装するべきです。 このファイルのための目的は、アプリケーションを起動すること、 及びそれらを初期化することによって、コンポーネントがアプリケーションを利用できるようにすることです。

  • data/: このディレクトリは、 揮発性でおそらく一時的なアプリケーションのデータを格納するための場所を提供します。 このディレクトリのデータの障害は、アプリケーションが失敗する原因になるかもしれません。 また、このディレクトリの情報は、サブバージョン・リポジトリに関与するかもしれませんし、 関与しないかもしれません。 このディレクトリの物体の例は、 セッション・ファイル、キャッシュ・ファイル、sqlite データベース、 そしてログとインデックスです。

  • docs/: このディレクトリは、生成されたか、または直接編集された ドキュメンテーションを含みます。

  • library/: このディレクトリは、アプリケーションが依存する共通ライブラリのため、 PHP include_path 上になければなりません。 開発者は、 PHP のマニュアル(ゼンド自体によって確立されるそれらだけでなく)の ユーザレベルでの命名の 手引き に沿って、一意の名前空間内のこのディレクトリ配下に それらのアプリケーション・ライブラリーのコードを置かなければなりません。 このディレクトリは、 Zend Framework 自体も含むかもしれません。 もしそうなら、それを library/Zend/ にしまうでしょう。

  • public/: このディレクトリは、アプリケーションのためにすべての公開ファイルを含みます。 index.phpZend_Application をセットアップして、実行します。 そして、それは順番に application/Bootstrap.php ファイルを実行します。 結果としてフロント・コントローラをディスパッチすることになります。 ウェブサーバのウェブ・ルートは、このディレクトリに一般的にセットされます。

  • scripts/: このディレクトリは、メンテナンスやビルド・スクリプトを含みます。 このようなスクリプトは、コマンド・ライン、クロン、 または実行時には実行されず、アプリケーションの correct 機能の一部である phing ビルドされたスクリプトを含むかもしれません。

  • temp/: temp/ フォルダは、一時的なアプリケーションデータのためにとっておかれます。 この情報は一般的に、アプリケーション svn リポジトリには入れられません。 temp/ ディレクトリ配下のデータが削除されると、 データがもう一度リストアされるか、再キャッシュされるまで、 アプリケーションは、パフォーマンスが低下した状態で動作し続ける可能性があります。

  • tests/: このディレクトリは、アプリケーションのテストを含みます。 これらは手書きや、PHPUnit テスト、Selenium-RC ベースのテスト、 またはその他の何かのテスト・フレームワークに基づきます。 既定では、ライブラリーのコードは library/ ディレクトリのディレクトリ構造をまねることによりテストできます。 さらに、アプリケーションのための機能テストは、 application/ ディレクトリの構造 (アプリケーション・サブディレクトリを含む)をまねて書けました。