Zend の index.php を結局どう書くか。

Zend_Toolで自動生成されるファイルがなんか気に入らない。

Toolについてはこの方が大変詳しく解説しています。
http://nonn-et-twk.net/twk/zend-tool


自動生成の何が気に入らないかと言うと
1.bootstrap.php と index.php のファイルを分離する意味があまり伝わらない。
($bootstrap変数の目的が微妙にわからない。そもそも別ファイルで生成した変数とかオブジェクトを参照してるのが気持ち悪い)

2.ini_set とかは php.ini に書くべき
3.起動ファイルに書くべき事は結構多いし、使う機能に比例して増えて行く。
(なので、追加と削除は簡単に。使い回しも考えて)



でこうなった。

<?php

require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();


/**
 * 定数一覧
 * 規則)
 * 	先頭に'_'を一つ付ける。
 * 	ディレクトリの末尾に'/'は付けない。
 */

/**
 * プロダクト名 config で使用
 */
define('_SERVICE_NAME', 'product');

/**
 * 各ディレクトリ
 */
define( '_ROOT',dirname(dirname(__FILE__)) );
define( '_LIB_ROOT', _ROOT . '/library');
define( '_APP_ROOT', _ROOT . '/application' );


/**
 * パスの設定
 * PEAR、ZEND、SMARTY、のライブラリは php.ini で指定する
 */
set_include_path('.'
 . PATH_SEPARATOR . _LIB_ROOT
 . PATH_SEPARATOR . _APP_ROOT . '/models'
 . PATH_SEPARATOR . get_include_path()
);



My_Bootstrap::getInstance()
	->setConfig( My_Config::factory( _APP_ROOT . '/configs/config.ini' , _SERVICE_NAME ) )
	->settingSession()
	->settingResource()
	->settingLayout()
	->settingHelper()
	->settingFront()
	->dispatch();

補足1
My_Config は Zend_Config を静的に生成するクラスです。


補足2
define は config ファイル内から参照できるので、あえてここに書きます。
(というかパスと定数はここで書いておかないとBootstrapクラスが十分に機能しないです)
configi.iniは

[product]
...

[deelopment : product]
...

みたいにして環境を分けてます。

config.ini 内で定数を参照するには

moge.hoge = _ROOT "/dirname"

みたいに書きます。(最近これを知ってかなり驚いた)