导入的依赖项注入配置没有容器

时间:2015-02-07 17:03:56

标签: php symfony dependency-injection

我在Symfonys依赖注入配置中访问$container对象时遇到问题。我只是使用di-component,而不是框架。有一个主配置文件,它位于我的项目的根目录中,并导入一些基本配置以及一些参数:

<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

<imports>
    <import resource="consts.php"/>
    <import resource="src/Base/dependencies.xml"/>
</imports>

</container>

在导入第二个xml文件时,第一个文件失败时出现错误:

  

在...

中的非对象上调用成员函数setParameter()

consts.php文件只是一个两行:

<?php
$container->setParameter('dir.root', __DIR__);
$container->setParameter('dir.data', __DIR__.'/data');

根据documentation on setting external Parameters,一切都应该有效,还是我错过了什么?

提前感谢您的帮助!

修改 在加载DI-Container的脚本中,我意外地手动导入了consts.php。这导致了上述错误。无论如何,当没有找到类时,删除此导入会导致抛出Symfonys FileLoaderLoadException,这可以解析要导入的文件的类型。

  

致命错误:未捕获的异常&#39; Symfony \ Component \ Config \ Exception \ FileLoaderLoadException&#39;有消息&#39;无法加载资源&#34; /Users/carsten/Workspace/PHP/black-tie/consts.php"。&#39;在/Users/carsten/Workspace/PHP/black-tie/vendor/symfony/config/Symfony/Component/Config/Loader/Loader.php:73

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我猜可能原因在于文件路径。您尝试使用

导入文件
<import resource="consts.php"/>

所以FileLoader在根目录中查找它,但可能是位于app / config目录(或其他地方)的文件。检查路径!