Как правильно вызвать конструктор базового класса - PullRequest
0 голосов
/ 17 марта 2019

Базовый класс:

abstract class AbstractHandler {
    use FeedbackTrait;

    /** @var EntityManager */
    private $entityManager;
    /** @var SessionInterface */
    private $session;

    /**
     * Constructor.
     *
     * @param EntityManager    $entityManager
     * @param SessionInterface $session
     */
    public function __construct(
        EntityManager $entityManager,
        SessionInterface $session
    ) {
        $this->entityManager = $entityManager;
        $this->session = $session;
    }

    /**
     * @return EntityManager
     */
    protected function getEntityManager() {
        return $this->entityManager;
    }

    /**
     * @return FlashBagInterface
     */
    protected function getFeedback() {
        /** @var FlashBagInterface $feedback */
        $feedback = $this->session->getBag('boltforms');

        return $feedback;
    }
}

Тогда в классе-члене у меня есть собственный конструктор. Но я не могу понять, как правильно вызывать конструктор базового класса.

class bigbrotherHandler extends AbstractHandler {
    //custom class vars

    public function __construct() {
        parent::__construct();
        //custom declarations
    }
}

PhpStorm говорит Required parameter $entityManager missing. Но как мне упомянуть этот параметр здесь? Если я иду с parent::__construct($entityManager);, он говорит Undefined variable $entityManager. Если я просто скопирую данные из фигурных скобок в конструкторе базового класса, это также даст всевозможные ошибки. Как я могу правильно вызвать конструктор базового класса в этом случае?

1 Ответ

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

Вы должны вызвать родительский конструктор с параметрами, как это было объявлено в вашем абстрактном классе.

class bigbrotherHandler extends AbstractHandler {
    public function __construct(EntityManager $entityManager,SessionInterface $session) {
         parent::__construct($entityManager, $session);
         //custom declarations
     }
 }

Кстати, подумайте о том, чтобы сделать FeedbackProvider автономным сервисом и внедрить этот сервис в другие сервисы через конструкторили метод введения (не через сеттер).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...