php - 有没有办法在本地覆盖 ZF2 application.config.php 指令?

标签 php zend-framework2

我正在做一个 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 提供了很好的方法来通过文件名(如 modulename.local.php 但不是 application.config.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 变量 我不知道在ZF2.

我找到了 Stephen Rees-Carter's article ,是的,解决了这个问题,但我想了解是否有任何其他/更优雅的解决方案不依赖于 Composer 。

最佳答案

您可以在您的应用配置中测试您的环境变量并相应地设置缓存,例如,

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

return array(
    //..

    'config_cache_enabled' => $configCacheEnabled,

    //..
);

关于php - 有没有办法在本地覆盖 ZF2 application.config.php 指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16214305/

相关文章:

php - 如何在 phpmyadmin 中导入 5 GB MySQL Dump 文件

php - Zend Framework 2 模块在 Controller onBootstrap 之间共享变量

php - 服务层的数据访问和安全(Doctrine & ZF)

php - cookie 值中的逗号在 ZF2 中被双重解析

php - 发生 404 错误页面未找到 Zend 骨架应用程序

php - 使用 jquery block 变量

php - 是否可以在 Facebook 上运行基于 XMPP 的 PHP 和 Javascript 多人网络游戏?

php - 如何用 php/MySQL 做循环日期

php - 多个命名空间中的 Doctrine2 实体

php - 保护 PHP MySQL 代码