You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3 11依赖注入报错:AbstractRepository对象无法转为字符串

TYPO3 11依赖注入异常分析与解决

问题根源

异常的直接原因是注入方法中的赋值语句错误:

$this->$abstractRepository = $abstractRepository;

这里误用了PHP的变量变量语法,PHP会尝试将$abstractRepository对象转换为字符串,以此作为要赋值的属性名称,而AbstractRepository类没有实现__toString()方法,因此抛出"Object of class ... could not be converted to string"异常。

修正代码

将注入方法中的赋值语句改为直接引用类属性名(去掉属性名前的额外$):

class ModuleConfController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
    /**
     * @var \Aip\Bit3\Domain\Repository\AbstractRepository
     */
    private ?AbstractRepository $abstractRepository = null;

    public function injectAbstractRepository(AbstractRepository $abstractRepository)
    {
        $this->abstractRepository = $abstractRepository;
    }
}

补充说明

你的Services.yaml配置是正确的:

services:
  _defaults:
    autowire: true
    autoconfigure: true
    public: false

  Aip\Bit3\:
    resource: '../Classes/*'
    exclude: '../Classes/Domain/Model/*'

开启autowire: true后,TYPO3的依赖注入容器会自动识别inject{PropertyName}格式的方法,并完成实例注入,只要属性名称和注入方法的命名规范匹配,就能正常工作。

内容的提问来源于stack exchange,提问作者Ivano Luberti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 18:50:43