Zend_Application
で始める方法は2つあります、
そして、それらはプロジェクトを始める方法によって決まります。
いずれにせよ、どの場合も、Bootstrap
クラスと関連する
構成ファイルを作成することから始めます。
プロジェクトを作成するためにZend_Tool
を使う予定なら、
引き続き、下記をご覧下さい。
Zend_Application
を既存のプロジェクトに追加するなら、
読み飛ばして先に進みたいことでしょう。
Zend_Application
を使い始めるために最も早い方法は、
プロジェクトを生成するためにZend_Tool
を使うことです。
これにより、Bootstrap
クラスやファイルも生成されます。
プロジェクトを作成するために、(*nix システムで)zfコマンドを実行してください:
% zf create project newproject
またはWindowsのzf.bat
コマンド:
C:> zf.bat create project newproject
共に、下記のようなプロジェクト構造を作成します:
newproject |-- application | |-- Bootstrap.php | |-- configs | | `-- application.ini | |-- controllers | | |-- ErrorController.php | | `-- IndexController.php | |-- models | `-- views | |-- helpers | `-- scripts | |-- error | | `-- error.phtml | `-- index | `-- index.phtml |-- library |-- public | `-- index.php `-- tests |-- application | `-- bootstrap.php |-- library | `-- bootstrap.php `-- phpunit.xml
上記の図の中で、ブートストラップはnewproject/application/Bootstrap.php
にあり、
最初は以下のように見えます:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { }
構成ファイル、newproject/application/configs/application.ini
にも気付くでしょう。
それは下記のような内容です:
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
この構成ファイルの設定は全て、
Zend_Application
及びブートストラップで利用するためのものです。
他に興味を惹くファイルは
newproject/public/index.php
で、
それはZend_Application
を呼び出してディスパッチします。
// アプリケーション・ディレクトリへのパスを定義します defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // アプリケーション環境を定義します defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); /** Zend_Application */ require_once 'Zend/Application.php'; // アプリケーション及びブートストラップを作成して、実行します $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap() ->run();
クイックスタートを続けるには、 リソース節まで読み飛ばしてください。
Zend_Application
の基本は本当に単純です:
-
Bootstrap
クラスを持つapplication/Bootstrap.php
ファイルを作成します。 -
Zend_Application
に必要な基本的な設定を持つ構成ファイル、application/configs/application.ini
を作成します。 -
Zend_Application
を利用するために、public/index.php
を変更します。
初めに、Bootstrap
クラスを作成します。
application/Bootstrap.php
ファイルを下記の内容で作成します。
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { }
次に、構成を作成します。
このチュートリアルではINI形式の構成を使います;
もちろん、XML、JSON、YAMLや
PHP構成ファイルも同様に利用できます。
application/configs/application.ini
ファイルを作成して、
下記の内容にしてください:
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
次に入り口となるスクリプト、public/index.php
を変更しましょう。
もしファイルが存在しなければ、作成してください;
さもなければ、下記の内容でファイルを置き換えてください:
// アプリケーション・ディレクトリへのパスを定義します defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // アプリケーション環境を定義します defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // 一般的に、library/ ディレクトリーをinclude_pathに追加したいでしょう // 特にそれがインストールしたZFを含むならば set_include_path(implode(PATH_SEPARATOR, array( dirname(dirname(__FILE__)) . '/library', get_include_path(), ))); /** Zend_Application */ require_once 'Zend/Application.php'; // アプリケーション及びブートストラップを作成して、実行します $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap() ->run();
アプリケーション環境定数が環境変数 "APPLICATION_ENV" を探すことに気づくかもしれません。
我々は、これをウェブサーバ環境で設定することを勧めます。
Apacheでは、vhost定義、または、.htaccess
ファイルのいずれかで設定できます。
我々は、public/.htaccess
ファイルとして以下の内容を推奨します:
SetEnv APPLICATION_ENV development RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
mod_rewriteについて学ぶ
上記の書き換えルールでは、バーチャル・ホスト・ドキュメント・ルートの配下の どのファイルでもアクセスが許可されます。 このように公開されたくないファイルがあるならば、より限定的なルールにしたいかもしれません。 mod_rewriteについてより学ぶ ためにはApache ウェブサイトを訪れてください。
ここまでで、
Zend_Application
をすっかり利用し始められるようになっています。
上記の手引きに従うと、ブートストラップ・クラスはフロントコントローラを利用します。 そして、それが動くとき、フロントコントローラをディスパッチします。 しかし、おそらく、これより少し多くの構成を必要とするでしょう。
この節では、アプリケーションにリソースを2つ追加することに目を向けましょう。 最初に、レイアウトを準備して、ビュー・オブジェクトをカスタマイズします。
Zend_Application
で提供される標準的なリソースのうちの1つは、
「レイアウト」リソースです。
このリソースでは、Zend_Layout
インスタンスを構成するために使う構成値を
あなたが定義することをあてにしています。
これを使うためにすべきことは、構成ファイルを更新することです。
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" ; ADD THE FOLLOWING LINES resources.layout.layout = "layout" resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
もしまだ無ければ、
application/layouts/scripts/
ディレクトリ、
及びそのディレクトリ内にlayout.phtml
ファイルを作成してください。
以下の通りで、レイアウトを良く始められます。
(そして、それは次に含まれるビュー・リソースと結びつきます):
<?php echo $this->doctype() ?> <html> <head> <?php echo $this->headTitle() ?> <?php echo $this->headLink() ?> <?php echo $this->headStyle() ?> <?php echo $this->headScript() ?> </head> <body> <?php echo $this->layout()->content ?> </body> </html>
ここまでで、レイアウトを役立てられるようになっています。
次に、カスタム・ビューリソースを追加します。
ビューを初期化する際に、
HTML DocType及び
HTMLの head で使用するタイトルのデフォルト値を設定を希望します。
これは、メソッドを追加するBootstrap
クラスを編集することにより成就できます:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initView() { // ビューを初期化します $view = new Zend_View(); $view->doctype('XHTML1_STRICT'); $view->headTitle('My First Zend Framework Application'); // それを ViewRenderer に追加します $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper( 'ViewRenderer' ); $viewRenderer->setView($view); // ブートストラップで保存できるように返します return $view; } }
このメソッドはアプリケーションを起動する際に自動的に実行されて、 アプリケーションの必要性に従ってビューが初期化されることを確実にします。