2016-04-25 57 views
0

在一个文件中,我创造这样的控制器希望错误的事情:PhpStorm警告

$controller = new typeController(true, $dbHandler, $repository); 

和PhpStorm突出显示的字“真”说“预计库,得到了布尔”

的typeController结构是:

public function __construct($createSession=true, $con=false, Repository $repository) { 
    parent::__construct($createSession, $con); 
    $this->repository = $repository; 
} 

那么为什么它说它应该是首先存储库而不是布尔?为什么$ dbHandler工作正常,我错过了什么?

编辑: 快速文档说:

public function typeController::__construct($createSession=true, $con=false, Repository $repository) typeController 

typeController构造。 参数:

布尔$了createSession

布尔$ CON

类\ $库库

中宣称:

classes\types\typeController

+2

可能是一个构造函数的参数后,在末尾 – Rizier123

+2

1)请显示该方法的完整签名(最好是 - 整个文件)2)具有参数的默认值,不在最后......没有意义3)将插入符号放在有问题的行上并调用View |快速文档“ - 发布PhpStorm对该方法的看法截图。 – LazyOne

+1

所有带默认值的参数都必须位于没有默认值的所有参数之后。 – Phiter

回答

3

$repository字段没有默认值,但它是最后一个构造函数参数。由于其他两个有默认值,然后$repository应该先如以下:

public function __construct(Repository $repository, $createSession=true, $con=false) 

这样,你可以初始化控制是这样的:

如果你想保持默认值
$controller = new typeController($repository); 

,或者像这样:

$controller = new typeController($repository, true, $dbHandler); 

如果你想覆盖它们。

你都不能在构造函数的参数没有默认值,具有默认值,因为默认参数可以对象实例化过程中,因为默认值是没有用的时候都没有被ommitted