【问题标题】:Symfony2 multiple EnvironmentsSymfony2 多个环境
【发布时间】:2013-12-06 16:29:57
【问题描述】:

我想知道是否有可能在 Symfony 的 app.php 中定义多个环境

src/web/app.php:

$kernel = new AppKernel('benchmark', false);
$kernel = new AppKernel('benchmark,dev', false);   // < Incl. the dev tools

我为什么要问?这不是一个愚蠢的问题吗?因为默认的检查语法似乎支持多种环境in_array() 还是我在这里误解了什么?

src/app/AppKernel.php:

if (in_array($this->getEnvironment(), array('dev'))) {
            $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
            ...
}

【问题讨论】:

    标签: php arrays symfony


    【解决方案1】:

    app/AppKernel 中的“检查”用于检查是否有一些您希望在多个环境中可用的包,例如“测试”或“开发”。

    然后您可以在您的 AppKernel 中包含以下几行:

    if (in_array($this->getEnvironment(), array('dev', 'test'))) {
                $bundles[] = new My\Bundle\Uber\MyUberBundle();
                ...
    }
    

    这将在开发和测试环境中启用此示例包。

    所以 app.php 不支持多个环境定义。如果您想要多个环境,您仍然可以将新文件定义为 app.php 和 app_dev.php :)

    例如一个 admin.php 本身看起来像

    <?php
    
    use Symfony\Component\ClassLoader\ApcClassLoader;
    use Symfony\Component\HttpFoundation\Request;
    
    $loader = require_once __DIR__.'/../app/bootstrap.php.cache';
    require_once __DIR__.'/../app/AppKernel.php';
    $kernel = new AppKernel('admin', false);
    $kernel->loadClassCache();
    $request = Request::createFromGlobals();
    $response = $kernel->handle($request);
    $response->send();
    $kernel->terminate($request, $response);
    

    【讨论】:

      猜你喜欢
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      相关资源
      最近更新 更多