使用SymfonyComponentDependencyInjection配置具有路径的Silex应用程序


Configuring a Silex-Application with paths using SymfonyComponentDependencyInjection

我目前正在重构一个比最初预期的要大的Silex'Application。作为这项工作的一部分,我将服务定义从源代码移动到services.yml中,并只调用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);

在我的服务中是这样的。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]作为条令设置的第一个参数,我想做这样的事情:[%ROOT_PATH%/src/Project/Entity],其中%ROOT_PATH%被添加到ContainerBuilder中,有点像$container->???('ROOT_PATH', dirname(__DIR__))

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

自己找到的。

只需添加:

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

在我上面的片段中。