Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 注入问题-缺少父构造函数调用_Php_Symfony_Oop_Dependency Injection_Symfony 3.4 - Fatal编程技术网

Php 注入问题-缺少父构造函数调用

Php 注入问题-缺少父构造函数调用,php,symfony,oop,dependency-injection,symfony-3.4,Php,Symfony,Oop,Dependency Injection,Symfony 3.4,我正在尝试将我的BaseService注入到另一个服务中,我需要调用我在BaseService中编写的存储库 我认为这是一件非常简单的事情,但它标记了uuu构造部分: 缺少父构造函数调用 我在BaseService中创建了这种逻辑,并且它是有效的 class BaseService { /** @var ContainerInterface */ public $container; public $em; public function __construct

我正在尝试将我的BaseService注入到另一个服务中,我需要调用我在BaseService中编写的存储库

我认为这是一件非常简单的事情,但它标记了uuu构造部分:

缺少父构造函数调用

我在BaseService中创建了这种逻辑,并且它是有效的

class BaseService
{
    /** @var ContainerInterface */
    public $container;
    public $em;

    public function __construct(ContainerInterface $container, EntityManagerInterface $em)
    {
        $this->container = $container;
        $this->em        = $em;
    }

    /**
     * @return \Doctrine\Common\Persistence\ObjectRepository|\Doctrine\ORM\EntityRepository
     */
    public function getMyDataRepository()
    {
        return $this->em->getRepository(MyData::class);
    }
}
以及我的其他服务:

class DataService extends AbstractAdmin
{
    public function __construct(BaseService $baseService)
    {
        $this->baseService = $baseService;
    }

    public function getTransactions(Card $card)
    {
        return $this->getMyDataRepository()
            ->createQueryBuilder('c')
            ->getQuery();
    }
}

您忘记在DataService上添加AbstractAdmin的父构造函数

class DataService extends AbstractAdmin
{

    public function __construct(BaseService $baseService)
    {
        parent::__construct(AbstractAdmin dependencies goes here);
        $this->baseService = $baseService;
    }

    public function getTransactions(Card $card)
    {
        return $this->getMyDataRepository()
            ->createQueryBuilder('c')
            ->getQuery();
    }
我不知道哪些依赖项需要您的AbstractAdmin,我找到了答案

我是这样做的:

public $baseService;

public function __construct($code, $class, $baseControllerName, BaseService $baseService)
{
    parent::__construct($code, $class, $baseControllerName);
    $this->baseService = $baseService;
}

因为抽象管理员有它的构造函数。

在DateServiceAbstractAdmin中尝试$this->baseService->getMyDataRepository()而不是$this->getMyDataRepository()?如果是这样的话,那就可以解释错误消息了。它不存在,但它是必需的,因为我使用的是SonataAdmin。所以我在寻找替代品@陶制的。同样的错误@Rawburner@develops-不知道这意味着什么,但当一个类扩展另一个类并且不调用父构造函数(如果存在)时,会出现错误。重新检查代码。getMyDataRepository的另一个错误是,在构造函数问题解决之前,您无法找到它。唉,注释清楚地表明AbstractAdmin没有构造函数。虽然我想它本身可能会扩展另一个类。