基类:
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
。如果我只是从基类构造函数中的括号中复制数据,它还会给出各种错误。在这种情况下,如何正确调用我的基类构造函数?
答案 0 :(得分:0)
您必须使用在抽象类中声明的参数来调用父构造函数。
class bigbrotherHandler extends AbstractHandler {
public function __construct(EntityManager $entityManager,SessionInterface $session) {
parent::__construct($entityManager, $session);
//custom declarations
}
}
BTW考虑将“ FeedbackProvider”作为独立服务,然后通过构造函数或方法注入(而不是通过setter)将该服务注入另一个服务。