スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--年--月--日 スポンサー広告 トラックバック:- コメント:-

Zend Framewaork 環境別設定の仕組みを見てみる

application.iniにアプリケーション設定情報を記述します。各環境別に定義しています。

まずZend_Toolで作成したままの内容を見てみます。
~/sample/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"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1


productionに標準の設定情報をまとめてます。
それを継承したstaging、testing、developmentにproductionから設定を変えたい項目を上書きしているといった内容です。
「production(製品版)」ではエラー時に情報を画面に出力しないが
「testing(テスト版)、development(開発版)」では表示する。
となっています。

面倒なのでstagingとtestingは削除します。あと分りやすくコメントを付けます。
編集後

##################################################
# 製品版設定
##################################################
[production]

# エラー表示(しない)
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0

# アプリケーション構成
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"

# フロントコントローラ設定
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0


##################################################
# 開発版設定(製品版と異なるものだけ上書き記述する)
##################################################
[development : production]

# エラー表示(する)
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

# フロントコントローラ設定
resources.frontController.params.displayExceptions = 1



次に関係してくるのが~/sample/public/index.phpです。
application.iniを読み、アプリケーションを実行しています。
この際、定数「APPLICATION_ENV」の値によって環境を判別しています。
(productionやdevelopmentなど。未定義ならproductionとする。)
内容に変更はありませんがコメントを付けます。

編集前

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application( 
    APPLICATION_ENV, 
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap() 
                      ->run();


編集後

// Applicationディレクトリパスの定義
defined('APPLICATION_PATH') 
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// エンビューロメントの定義(環境切り替え用 .htaccessに記述)
defined('APPLICATION_ENV') 
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// library(ライブラリを配置している)ディレクトリにインクルードパスを通す
set_include_path(implode(PATH_SEPARATOR, array( 
    realpath(APPLICATION_PATH . '/../library'), 
    get_include_path(),
)));

// 年月日文字列の定義(ログファイルデイリーサフィックスに使用)
define('DATESTAMP', Date('Y-m-d'));

// 定数クラスの読み込み
require_once APPLICATION_PATH . '/Constant.php';

// アプリケーションの起動
require_once 'Zend/Application.php';
$application = new Zend_Application( 
    APPLICATION_ENV, 
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap() 
                      ->run();


そして「APPLICATION_ENV」を設定するのは~/sample/public/.htaccessです。
つまり環境によって書き換えるのはこのファイルだけです。

編集前

RewriteEngine On
RewriteBase /sample/public/
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]


編集後

SetEnv APPLICATION_ENV development

RewriteEngine On
RewriteBase /sample/public/
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]


製品版(公開サーバ)ではdevelopmentをproductionに書き換えましょう。
スポンサーサイト

2010年05月31日 Zend Framework トラックバック:0 コメント:0

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。