代码之家  ›  专栏  ›  技术社区  ›  Jazzschmidt

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

  •  2
  • Jazzschmidt  · 技术社区  · 11 年前

    我在访问 $container 对象。我只是在使用di组件,而不是框架。有一个主配置文件,它位于我的项目的根目录中,并导入一些基本配置和一些参数:

    <?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容器的脚本中,我意外地导入了 常量.php 手动。这导致了上述错误。无论如何,删除此导入导致Symfonys FileLoaderLoadException ,在找不到类时引发,该类可以解析要导入的文件的类型。

    致命错误:/Users/carsten/Workspace/PHP/black-tie/vvendor/Symfony/Config/Symfony/Component/Config/Loader/Loader.PHP:73

    我该如何修复?

    1 回复  |  直到 11 年前
        1
  •  0
  •   Hades Architect    11 年前

    我可以猜测原因在文件路径中。您尝试使用导入文件

    <import resource="consts.php"/>
    

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

    推荐文章