Symfony 6父控制器到子控制器的依赖注入
P粉208469050
P粉208469050 2023-08-17 20:19:03
[PHP讨论组]

我有一个基础控制器类,其中包含一些所有子控制器都会使用的实用方法。目前它有3个依赖项,但将来可能会有更多。因此,每当我想要向子控制器添加一个依赖项时,我现在遇到了一个问题,即我认为依赖注入的指令过多。

abstract class BaseController extends AbstractController
{
    public function __construct(
        protected readonly SerializerInterface $serializer,
        protected readonly ValidatorInterface  $validator,
        private readonly ResponseGenerator     $responseGenerator,
    ) {
    }
    ...

}

class ChildController extends BaseController
{
    // 所有父类注入在所有子类中都是必需的。
    public function __construct(
        SerializerInterface             $serializer,
        ValidatorInterface              $validator,
        ResponseGenerator               $responseGenerator,
        private readonly SomeRepository $someRepository,
        ... 在这里插入任何其他子控制器特定的依赖项。
    ) {
        parent::__construct($serializer, $validator, $responseGenerator);
    }
    ...
}

我尝试在基础控制器中使用$this->container->get('serializer'),但这不起作用,因为AbstractController::$container是通过注入定义的,但没有构造函数,所以无法调用parent::__construct()。此外,它也无法给我提供validator,所以即使它起作用,也只能解决部分问题。

我尝试寻找可以使用的属性,例如

abstract class BaseController extends AbstractController
{
    #[Inject]
    protected readonly SerializerInterface $serializer;

    #[Inject]
    protected readonly ValidatorInterface $validator;

但是没有找到类似的东西(PHP-DI有,但Symfony没有)。

有没有办法以某种方式消除子控制器中的重复依赖项?

P粉208469050
P粉208469050

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号