在一个文件中,我正在创建一个这样的控制器:
$controller = new typeController(true, $dbHandler, $repository);
和PhpStorm突出了“真实”这个词。说'期望的存储库,得到了bool'
typeController构造是:
public function __construct($createSession=true, $con=false, Repository $repository) {
parent::__construct($createSession, $con);
$this->repository = $repository;
}
那么为什么它首先应该是存储库而不是bool?为什么$ dbHandler工作正常,我缺少什么?
编辑: 快速文档说:
public function typeController::__construct($createSession=true, $con=false, Repository $repository) typeController
typeController构造函数。 参数:
bool $ createSession
bool $ con
classes \ Repository $ repository
声明于:
classes\types\typeController
答案 0 :(得分:3)
$repository
字段没有默认值,但它是最后一个构造函数参数。由于其他两个都有默认值,因此$repository
应该首先出现,如下所示:
public function __construct(Repository $repository, $createSession=true, $con=false)
这样你可以像这样初始化控制器:
$controller = new typeController($repository);
如果你想保留默认值,或者像这样:
$controller = new typeController($repository, true, $dbHandler);
如果你想覆盖它们。
在具有默认值的构造函数参数之后,您不能放置没有默认值的构造函数参数,因为在对象实例化期间可以省略默认参数