gpt4 book ai didi

php - Symfony 自动服务加载失败并显示 "Class does not exist"

转载 作者:可可西里 更新时间:2023-11-01 01:13:12 26 4
gpt4 key购买 nike

我正在使用 Symfony 的依赖注入(inject)组件(独立的,不在 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

最佳答案

我的 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();

工作定义

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();

关于php - Symfony 自动服务加载失败并显示 "Class does not exist",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47432069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com