php - 如何正确调用基类构造函数
问题描述
基类:
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
。如果我只是从基类构造函数的大括号中复制数据,它也会给出各种错误。在这种情况下,如何正确调用我的基类构造函数?
解决方案
您必须使用参数调用父构造函数,因为它已在抽象类中声明。
class bigbrotherHandler extends AbstractHandler {
public function __construct(EntityManager $entityManager,SessionInterface $session) {
parent::__construct($entityManager, $session);
//custom declarations
}
}
顺便说一句,考虑将“FeedbackProvider”作为独立服务,并通过构造函数或方法注入(而不是通过 setter)将此服务注入另一个服务。
推荐阅读
- java - How to Call "public void paint(Graphics g)" with Parameters (Canvas)
- javascript - 如何在 Jmeter Webdriver Sampler 中禁用“Chrome --disable-web-security”?
- python - Is it possible to shorten several layers of 'for in' with actions at each layer?
- android - bluetooth InputStream in android gets corrupted after sending with OutputStream
- python - Homebrew 可以在 Apple ARM 处理器上运行吗?
- excel - 如何检查一行是否包含某些文本
- remote-access - What are some tips to connect to linux server remotely from windows and increase productivity?
- python - 向 Django 博客项目添加“赞”按钮无法正常工作
- c# - 使用 XPath 选择子元素的父元素
- javascript - 为什么我得到这个文件或目录不存在?我做了文件夹?