今日は珍しく早起きしたので、朝からお勉強してみました。
ずっと気になってて放置してたZend_ApplicationとZend_Application_Bootstrap_Bootstrap
を調べてみました。
まとめてないので、今回はメモ書き。
いつもある程度キレイにしてから書いてるので、
たまには途中過程を書くのもありかなと。
実は完成形を見るより、途中過程を見た方が、まねはしやすいんですよね。
完成形がある程度の精度にならないと、途中過程から良し悪しを判断するのは
また難しいんですけどね。
Zend_Application
__construct($environment, $options = null)
Zend_Loader_Autoloader::getInstance();
$option = _loadConfig($options);
$_autoloader … オートローダ
$_bootstrap … ブートストラップ
$_environment … 実行環境
$_options … オプション
Zend_Config_Ini
Zend_Config_Xml
Zend_Config
Bootstrap
Zend_Application_Bootstrap_Bootstrap
__construct($application)
setOptions
_loadConfig
setPhpSettings
setIncludePaths
setAutoloaderNamespaces
$autoloader->registerNamespace($namespace);
setBootstrap
run()
FrontController::getDefaultModule();
FrontController::setParam('bootstrap', $this);
FrontController::dispatch();
Zend_Application_Bootstrap_BootstrapAbstract
$_application … Zend_Application|Zend_Application_Bootstrap_Bootstrapper
$_classResources … 内部リソース・メソッド
$_container … リソースコンテナ
$_environment … 実行環境
$_options … オプション
$_pluginLoader … Zend_Loader_PluginLoader_Interface
$_pluginResources … リソースプラグイン
$_run … 実行されたイニシャライザ
$_started … 実行中のイニシャライザ
__construct($application)
$this->setApplication($application);
$options = $application->getOptions();
$this->setOptions($options);
ソース見た方が早いかもですね。
あくまでも自分でソース読んで、まとめるのに必要そうなところを
残しただけですので。
要は、1.7までbootstrap.phpとか作って、
設定ファイルの読み込みとか、Zend_Dbオブジェクトの生成とかやってた部分を
クラスにしたみたいですね。
確かに、この部分は最初、どうやって書くんだ?
どこに書くのが適切なのか?
って悩んでた部分です。
これで、front controllerとbootstrapがちょっとはキレイになるのかな?
設定ファイルの読み込みに関しては、スーパークラスでやってくれるみたいです。
フレームワークのこの部分って、作りこめば作りこむほど、
各クラスが依存しちゃうんですよね。
疎結合を掲げているZend Frameworkとしては、
ここは自作してくださいねって方針なんでしょうね。
でも設定ファイルの読み込み、DBとの接続、
rooterの処理くらいまでは用意してあってもいいと思うんですけどね。
ずっと気になってて放置してたZend_ApplicationとZend_Application_Bootstrap_Bootstrap
を調べてみました。
まとめてないので、今回はメモ書き。
いつもある程度キレイにしてから書いてるので、
たまには途中過程を書くのもありかなと。
実は完成形を見るより、途中過程を見た方が、まねはしやすいんですよね。
完成形がある程度の精度にならないと、途中過程から良し悪しを判断するのは
また難しいんですけどね。
Zend_Application
__construct($environment, $options = null)
Zend_Loader_Autoloader::getInstance();
$option = _loadConfig($options);
$_autoloader … オートローダ
$_bootstrap … ブートストラップ
$_environment … 実行環境
$_options … オプション
Zend_Config_Ini
Zend_Config_Xml
Zend_Config
Bootstrap
Zend_Application_Bootstrap_Bootstrap
__construct($application)
setOptions
_loadConfig
setPhpSettings
setIncludePaths
setAutoloaderNamespaces
$autoloader->registerNamespace($namespace);
setBootstrap
run()
FrontController::getDefaultModule();
FrontController::setParam('bootstrap', $this);
FrontController::dispatch();
Zend_Application_Bootstrap_BootstrapAbstract
$_application … Zend_Application|Zend_Application_Bootstrap_Bootstrapper
$_classResources … 内部リソース・メソッド
$_container … リソースコンテナ
$_environment … 実行環境
$_options … オプション
$_pluginLoader … Zend_Loader_PluginLoader_Interface
$_pluginResources … リソースプラグイン
$_run … 実行されたイニシャライザ
$_started … 実行中のイニシャライザ
__construct($application)
$this->setApplication($application);
$options = $application->getOptions();
$this->setOptions($options);
ソース見た方が早いかもですね。
あくまでも自分でソース読んで、まとめるのに必要そうなところを
残しただけですので。
要は、1.7までbootstrap.phpとか作って、
設定ファイルの読み込みとか、Zend_Dbオブジェクトの生成とかやってた部分を
クラスにしたみたいですね。
確かに、この部分は最初、どうやって書くんだ?
どこに書くのが適切なのか?
って悩んでた部分です。
これで、front controllerとbootstrapがちょっとはキレイになるのかな?
設定ファイルの読み込みに関しては、スーパークラスでやってくれるみたいです。
フレームワークのこの部分って、作りこめば作りこむほど、
各クラスが依存しちゃうんですよね。
疎結合を掲げているZend Frameworkとしては、
ここは自作してくださいねって方針なんでしょうね。
でも設定ファイルの読み込み、DBとの接続、
rooterの処理くらいまでは用意してあってもいいと思うんですけどね。