忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/11/22 16:44 |
ZF1.11:Zend_Applicationその1
前回「最初から用意しろよ」とか言いましたが、実はZend_Applicationで実現できます。

クイックスタートを利用して前回までのZend_Controllerを書き換えてみます。
クイックスタートは2種類ありますが、Zend_Toolを利用する方法は新規プロジェクト用なので後者を使用します。

まずBootstrapを作成。

application/Bootstrap.php
<?php
	class Bootstrap extends Zend_Application_Bootstrap_Bootstrap{}
コンフィグファイルを作成。
	[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
インデックスを書き換え。

html/index.php
<?php
	// アプリケーション・ディレクトリへのパスを定義します
	defined('APPLICATION_PATH')
	    || define('APPLICATION_PATH',
	              realpath(dirname(__FILE__) . '/../application'));
	 
	// アプリケーション環境
    defined('APPLICATION_ENV')
       || define('APPLICATION_ENV',
                 (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
                                             : 'production'));
	
	// 必要があればinclude_pathを追加
	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();
html/.htaccessに一行追加。
	SetEnv APPLICATION_ENV development
ほとんどコピペしただけです。
順番に見ていきましょう。

Bootstrap.phpは、毎回必ず呼ばれるクラスになります。
前回作ったBaseController.phpのようなものですが、予めシステムに組み込まれているぶんrequire_onceを書いたりextendsしたりしなくてすむようになります。
これ一体何処からどうやって呼ばれているのかさっぱりわからない。

application.iniは設定ファイルです。
書き方はZend_Configの記事を参照してください。
'production'、'staging'、'testing'、'development'の4環境を設置しています。
まあ大抵は'production''development'の二つしか使いませんが。

public/index.phpはインデックスです。
BaseControllerではrun()するだけでしたが、Zend_Applicationは幾つか事前準備が必要です。
定数APPLICATION_ENVはapplication.iniに対するどの環境かを設定しています。
定数APPLICATION_ENVの中身は環境変数APPLICATION_ENVから取得しており、その環境変数APPLICATION_ENVはhtml/.htaccessで'development'と指定しているので開発環境となります。
従って本番環境ではhtml/.htaccessの中身が'production'となります。

これでとりあえず準備ができたのでブラウザで実行。
Warning: require_once(APP_DIRcontrollers/BaseController.php) [function.require-once]: failed to open stream: No such file or directory in C:\hoge\fuga\application\controllers\IndexController.php on line 3

お?
PR


2011/12/19 21:25 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<Minecraft 1.8.1 IndustrialCraft2 リサイクル装置を作る | HOME | 買ったものリスト 2011/12/18>>
忍者ブログ[PR]