4

私は ZF2 プロジェクトに取り組んでおり、私の public/index.php ファイルは次のようになっています。

<?php
chdir(dirname(__DIR__));
require 'init_autoloader.php';
Zend\Mvc\Application::init(require 'config/application.config.php')->run();

アプリケーションの初期化プロセスは、application.config.php を使用することから始まります。ZF2 は、application.config.php ファイルではなく、modulename.local.php などのファイル名を介してローカルでモジュール構成をオーバーライドする優れた方法を提供することを知っています。

たとえば、application.config.php には、次のように module_listener_options キーがあります。

return array(
    'modules' => array(
    // ...
    ),

    'module_listener_options' => array(
        'module_paths' => array(
         // ...
         ),

    'config_glob_paths' => array(
        'config/autoload/{,*.}{global,local}.php',
     ),

     'config_cache_enabled' => TRUE,
     'config_cache_key' => 'configuration_cache',
     'cache_dir' => __DIR__ . '/../data/cache'
// ...
)

そのため、開発環境での作業中に構成キャッシュをローカルで無効にしたいのですが、デプロイ後のトリック (カスタム git-hook / bash スクリプトの作成など) を必要とせずに、運用環境で有効にしたいと考えています。

また、APPLICATION_ENVIRONMENT $_ENVすべてのサーバー (dev、prod、test) に変数がありますが、ZF2 でこれを達成するための最善の方法がわかりません。

スティーブン・リース・カーターの記事を見つけました。はい、この問題を回避しますが、作曲家に依存しない他の/よりエレガントなソリューションがあるかどうかを知りたいです。

4

2 に答える 2

4

アプリ構成で環境変数をテストし、それに応じてキャッシュを設定するだけです。

<?php
// application.config.php
$env = getenv('APPLICATION_ENVIRONMENT');
$configCacheEnabled = ($env == 'production');

return array(
    //..

    'config_cache_enabled' => $configCacheEnabled,

    //..
);
于 2013-04-25T12:34:31.717 に答える
4

ローカル ファイルのオーバーライドを使用して、開発セットアップにのみモジュールを含める例を次に示します。ローカル構成ファイルの存在を上書きしたい場合は、環境変数のチェックを簡単に削除できます。

application.config.php

$config = array(
    'modules' => array(
        'Application',
        'ZfcBase',
    ),
    'module_listener_options' => array(
        'config_glob_paths'    => array(
            'config/autoload/{,*.}{global,local}.php',
        ),
        'module_paths' => array(
            './module',
            './vendor',
        ),
    ),
);

if(getenv('APPLICATION_ENV') == 'development' && is_readable('config/autoload/application.config.local.php')){
    $localAppConfig = require 'config/autoload/application.config.local.php';
    $config = array_merge_recursive($config,$localAppConfig);
} 

return $config;

config/application.config.local.php

return array(
    'modules' => array(
        'ZendDeveloperTools',
        'ZFTool'
    ),
    /**
     * Add any overrides to the new local config
     */
);

その後、ローカル ファイルにオーバーライドを追加するだけで済みます。これは、ステージング環境と運用環境で異なる場合があります。

于 2013-04-25T13:52:20.510 に答える