11

重複の可能性:
zendフレームワークを使用してコントローラーでapplication.iniを読み取る方法

application.iniZF の構成ファイルです。ZF のマニュアルに書かれているデフォルト以外にも、いくつかの設定があります。しかし、たとえばアクション コントローラからこれらのパラメータを取得するにはどうすればよいでしょうか? セッション中にこの構成をどこに保存するのが良いですか?

このBootstrap_Abstractクラスには、読み取りファイルgetOptions()の単純な php 配列を返すメソッドがあります。application.ini

$app = new Zend_Application(APPLICATION_ENV, '/application.ini');
$config = $app->bootstrap()->getOptions();  // $config is a php array of application.ini

そして、要素をおっとスタイルで取得したいと思います:

$param = $config[one][two];  // vs.
$param = $config->one->two;  // like this

ZF にはZend_Config_Ini、 を読み取り.ini、正確に ArrayObject を返すクラスがあります。しかし、とにかく読んだ後にapplication.iniもう一度Zend_Config_Ini読むことは避けたいと思います。Zend_Applicationしかし、BootstrapまたはZend_Applicationクラスは、からの ArrayObject の自動作成を提供しませんapplication.ini

次に、この $config をどこに保存すればよいでしょうか? でZend_Registry

Zend_Registry::set('config', $config);

そして、いくつかのアクションコントローラーでそれを取得します:

$config = Zend_Registry::get('config');  // I retrieve config
$param = $config->one->two;              // I retrieve parameter from it and use it

しかし、それは少し効率が悪いようです:通常の php 配列の形式で のコピーを 1 つと、同じものapplication.iniのArrayObject の形式でも 1 つのコピーを持っています。私の設定からパラメータを取得するには、2 つの手順を実行する必要があります。この問題をより効率的に解決するにはどうすればよいですか?Bootstrapapplication.iniZend_Registry

4

1 に答える 1

28

を使用すると、次のようなコードを使用して、アプリケーション (コントローラー、プラグイン、モデルなど) のどこからでもZend_Controller_Front情報を取得できます。application.ini

$config = Zend_Controller_Front::getInstance()->getParam('bootstrap');

次のようなオプションがいくつかあったとしapplication.iniます。

apikeys.google.maps.id  = "abc"
apikeys.google.maps.key = "123456789"
apikeys.twitter.oauth   = "20jg9032jg9320gj30"

$configその後、上記の変数を使用してこれらの値にアクセスできます。

$apikeys = $config->getOption('apikeys');
$mapsId  = $apikeys['google']['maps']['id'];  // abc
$maksKey = $apikeys['google']['maps']['key']; // 123456789
$twitKey = $apikeys['twitter']['oauth'];      // 20jg9032jg9320gj30

それが役立つことを願っています。

于 2012-10-15T19:02:59.977 に答える