Zend_Registry について
via noopな日々
確かに、global変数にほいほい入れてしまうよりはマシなんだけど。そうは言っても、≒グローバルなZend_Registryを多用するのは避けた方がいいと思う。Zend_Registryが絶対ダメというわけじゃなくて、適材適所ってことで。
Zend_Registryの多用には要注意 - noopな日々
これは激しく同意。 Zend_Registry はスコープがでかすぎるので使っていない。
たとえば良くあるケースだと、ブートストラップとかで読み込んだ設定値を持ち回したいとかに使用する事が多いと思う。
せめてリードオンリーなオプションがあれば、値が上書きされる危険がないんだろうけど、そういうオプションはソースを読んでも見つけられなかった。
じゃあどうやって持ち回すかの結論が自分の中で出ていない。
<?php $front = Zend_Controller_Front::getInstance(); $front->addModuleDirectory('/path/to/direcotry') ->setParam('config', 'fuga');
現状 Zend_Controller_Front に格納してコントローラで取得できるようにしているが、これだってコントローラで以下のようにすれば上書きできる。
<?php // Zend_Controller_Front::getInstance(); でも同じ $front = $this->getFrontController(); // fuga と表示 var_dump($front->getParam('config'); // hoge という文字列で上書き $front->setParam('config', 'hoge'); // hoge と表示 var_dump($front->getParam('config');
Zend_Registry よりは上書きする手間がかかるから、触りにくいというだけ。
どうしたもんか。