我目前正在重构一个比最初预期的要大的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__));
在我上面的片段中。