Проблема с введением - отсутствует родительский вызов конструктора - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь внедрить свой BaseService в другой сервис, где мне нужно вызвать мой репозиторий, который я написал в BaseService.

Я думаю, что это довольно простая вещь, но она помечает __construct деталь с помощью:

Отсутствует родительский вызов конструктора

Я сделал эту логику в BaseService, и она работает

class BaseService
{
 /** @var ContainerInterface  */
    var $container;
    var $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();
    }

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Я нашел ответ.

Я сделал это так:

public $baseService;

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

Поскольку у абстрактного администратора есть свой конструктор.

0 голосов
/ 15 марта 2019

Вы забыли добавить родительский конструктор AbstractAdmin в DataService.

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

...