0

私のapplication.iniにこれらの値があります

[production]
; Database;
    resources.db.adapter = "pdo_mysql"
    resources.db.params.host = "localhost"
    resources.db.params.username = "user1"
    resources.db.params.password = "password1"
    resources.db.params.dbname = "projects__01"


;Names
    website.settings.websiteName = "My website 1"
    website.settings.websiteUrl = "http://www.mydomain1.com"
    website.settings.title = "mydomain.com - mydomain"
    website.settings.titleSeperator = " - "


[staging : production]
; Database;
    resources.db.adapter = "pdo_mysql"
    resources.db.params.host = "localhost"
    resources.db.params.username = "user2"
    resources.db.params.password = "password2"
    resources.db.params.dbname = "projects__02"

;Exceptions
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
    resources.frontController.params.displayExceptions = 1

;Title and url
    website.settings.websiteName = "My website 2"
    website.settings.websiteUrl = "http://www.mydomain2.com"


[development : staging]
;Database
    resources.db.adapter = "pdo_mysql"
    resources.db.params.host = "localhost"
    resources.db.params.username = "user3"
    resources.db.params.password = "password3"
    resources.db.params.dbname = "projects__03"


;Title and url
    website.settings.websiteName = "My website 3"
    website.settings.websiteUrl = "http://www.mydomain3.com"

問題は、すべてのデータベースと例外値が適切に機能することです。つまり、想定どおりに適切に継承されます。

しかし、Title と URL に設定した値は適切に継承されず、最初に定義された値のみが使用されます。

どうしてこれなの?これは設計によるものですか?データベースや例外などの定義済み/標準の環境値のみが継承されますか?

それとも私はどこかで間違っていますか?

4

1 に答える 1

1

さて、あなたのコメントから、ブートストラップで新しい Zend_Config オブジェクトを作成し、これをレジストリに入れているように聞こえますが、期待どおりに返されないのはこれです。この場合、構成オブジェクトの 2 番目のパラメーターを省略したと推測しているため、次のようになります。

$config = new Zend_Config_Ini(APPLICATION_PATH.'/configs/application.ini');

しかし、あなたが持つべきものは次のようなものです:

$config = new Zend_Config_Ini(APPLICATION_PATH.'/configs/application.ini', APPLICATION_ENV);

2 番目のパラメーターは、構成ファイルのどのセクションを使用するかを指定します。それがなければ、常に同じ値が取得されます。

ただし、Zend Application が既にこれを行っているため、実際には構成ファイルを再解析する必要はありません。代わりに、ブートストラップ クラスからオプションにアクセスし、これらを使用してオブジェクトを作成できます (または、既存の配列形式でオプションを格納するだけです)。

protected function _initConfig()
{
    $config = new Zend_Config($this->getOptions());
    Zend_Registry::set('config', $config);

    return $config;
}

これは期待どおりに機能するはずです。

私の推測が間違っていた場合は、質問を編集して、構成オブジェクトが作成され、レジストリに保存されるブートストラップの関連部分を含めてください。

于 2011-10-19T22:49:18.870 に答える