Symfony2多个环境


Symfony2 multiple Environments

我想知道是否有可能在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();
            ...
}

app/AppKernel中的"check"用于检查在多个环境中是否有您想要的捆绑包,例如"test"或"dev"。

然后你可以在你的AppKernel中有以下几行:

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

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

因此,app.php不支持多个环境定义。如果你想要几个env,你仍然可以将新文件定义为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);