首页 文章

Symfony自动服务加载失败,“类不存在”

提问于
浏览
2

我正在使用Symfony的依赖注入组件(独立,不在Symfony应用程序中),版本 v3.3.13 尝试新的自动服务加载 .

如果我手动定义服务,则正确加载该类:

# services.yml
myasset:
    class: Mysite\Asset\Asset

# in a PHP file
$container->get('myasset'); # works

如果我设置自动加载,它将失败并显示错误消息:ReflectionException:类在1070行的/var/www/vendor/symfony/dependency-injection/ContainerBuilder.php中不存在

# services.yml
    _defaults:
        autowire: true
        autoconfigure: true
        public: false

    Bloggi\:
        resource: '../src/*'
        public: true

# in a PHP file
$container->get(Mysite\Asset\Asset::class);

它失败的原因是因为找到了类并且创建了服务定义,但是对于自动加载的服务,定义的 class 属性是 null .

1 回答

  • 1

    我的DIC配置看起来像:

    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__ . '/../config/services.yml');
    

    缺失的一行是 $container->compile();

    The working definition

    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__ . '/../config/services.yml');
    $container->compile();
    

相关问题