2

我目前正在重构一个Silex\Application比最初预期更大的。作为这项工作的一部分,我将服务定义从源移动到 services.yml 中,然后只调用 a Symfony\Component\DependencyInjection\ContainerBuilder。代码如下所示:

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;

$container = new ContainerBuilder();
$loader = new YamlFileLoader($container, new FileLocator(__DIR__));
$loader->load(__DIR__ . '/services.yml');

考虑以下代码行,它是创建的一部分Doctrine\ORM\EntityManager

Setup::createAnnotationMetadataConfiguration(array("src/Project/Entity"), true);

在我的 services.yml 中看起来像这样:

services:
    doctrine_config:
        class: Doctrine\ORM\Configuration
        factory_class: Doctrine\ORM\Tools\Setup
        factory_method: createAnnotationMetadataConfiguration
        arguments:
            - [src/Project/Entity]
            - true

最后,我的问题。我想将键和值传递给容器构建器,我可以像参数一样访问它,例如,而不是[src/Project/Entity]作为 Doctrine-Setup 的第一个参数,我想做这样的事情:[%ROOT_PATH%/src/Project/Entity],其中%ROOT_PATH%添加到 ContainerBuilder 有点像这样$container->???('ROOT_PATH', dirname(__DIR__)).

我在文档中没有找到类似的东西。我将通读 ContainerBuilder.php 以查看是否可以找到某些内容,但我不确定术语,例如%OOT_PATH%在我的场景中是否是变量、定义、别名......

4

1 回答 1

2

自己找到的。

就像添加一样简单:

$container->setParameter("ROOT_PATH", dirname(__DIR__));

在我上面的片段中。

于 2012-04-05T13:25:14.637 回答