Laminas 无法将服务“Laminas\Authentication\AuthenticationService”解析为工厂

问题描述 投票:0回答:1

我正在学习 PHP 的 Laminas 框架,并扩展官方文档中提供的相册教程的功能。我已成功将登录和注册等功能添加到相册页面。最近,我开始集成 Doctrine 来进行数据库存储和对象映射。

在合并 Doctrine 之前,一切都运行顺利。但是,我在 Composer 依赖项中遇到了与“laminas\di”包相关的问题,这导致了 Doctrine 的存储问题。我收到的错误消息是:

无法创建 DoctrineModule\Cache\LaminasStorageCache”。原因:无法解析 DoctrineModule\Cache\LaminasStorageCache 类中 Laminas\Cache\Storage\StorageInterface 类型的参数“storage”的值(请求为 DoctrineModule\Cache\LaminasStorageCache)。

任何有关如何解决此“Laminas\Authentication\AuthenticationService”错误的见解或指导将不胜感激。

为了解决这个问题,我决定从我的 Composer 依赖项中删除“laminas/laminas-di”包。虽然这解决了 Doctrine 的存储问题,但我现在面临新的错误消息:

无法将服务“Laminas\Authentication\AuthenticationService”解析为工厂;您确定您在配置过程中提供了它吗?

值得注意的是,自从我通过 Composer 将其删除后,我的项目中对“laminas/laminas-di”没有任何显式依赖,这就是为什么与“laminas\di”相关的错误令人费解。 这是我的 module.config.php 如果有帮助的话

return [
    'Laminas\Cache',
    'Laminas\Mvc\Plugin\FlashMessenger',
    'Laminas\Paginator',
    'Laminas\Session',
    'Laminas\Navigation',
    'Laminas\Form',
    'Laminas\I18n',
    'Laminas\InputFilter',
    'Laminas\Filter',
    'Laminas\Hydrator',
    'Laminas\Db',
    'Laminas\Router',
    'Laminas\Validator',
    'Laminas\Diactoros',
    'DoctrineModule',
    'Laminas\Cache\Storage\Adapter\Filesystem',
    'Laminas\Cache\Storage\Adapter\Memory',
    'DoctrineORMModule',
    'Application',
    'Us',
    'Album',
    'Blog',
];
php model-view-controller doctrine-orm zend-framework3 laminas
1个回答
0
投票

由于 laminas-di 在应用程序中注册为模块,因此通过抽象工厂进行了某种自动装配,这是因为我没有为其定义工厂。奇怪的是,当我不记得调用它时,lamians\di 已经存在于我的项目中。 简而言之,我只需向我的 Laminas\Authentication\AuthinticationService 添加一个工厂,其简化如下所示:

    'service_manager' => [
    'factories' => [
        AuthenticationService::class => function ($container) {
            $authService = new AuthenticationService();
            return $authService;
        },
    ],
],
© www.soinside.com 2019 - 2024. All rights reserved.