2016-04-25 99 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