php - 使用 Symfony\Component\DependencyInjection 配置 Silex 应用程序的路径

标签 php symfony1 dependency-injection silex

我目前正在重构一个 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% 是否是变量、定义、别名...

最佳答案

我自己找到的。

就像添加一样简单:

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

在我上面的代码片段中。

关于php - 使用 Symfony\Component\DependencyInjection 配置 Silex 应用程序的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10029237/

相关文章:

jquery - 使用 Jquery 隐藏和显示小部件

c# - Entity Framework 对象在传递后不更新

java - 处理不同环境的注解驱动的依赖注入(inject)

c# - 使用 SimpleInjector 为实现泛型类型的类获取单例实例,而不是实际返回单例

php - 使用未加密的密码通过数据库登录应用程序

PHP Object Variable变量名?

templates - Symfony 1.4 更改管理生成器操作或模板

php - 我在哪里可以找到 symfony 1.4 的深入教程?

php - Laravel 5.2 [] 没有连接器

php - 尝试在 php MYSQL 中将数据从一个表插入到另一个表