【发布时间】:2012-04-05 13:09:29
【问题描述】:
我目前正在重构一个比最初预期更大的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);
在我的 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% 在我的场景中是否是变量、定义、别名...
【问题讨论】:
标签: php symfony1 dependency-injection silex