PhpStorm 不支持 yaf 的 init 方法
PhpStorm does not support yaf's init method
在其他class中,PhpStorm可以识别__construct()
函数,但是在yaf controller中无法识别初始化方法init()
,导致init()
无法识别跟踪初始化操作。
class TestController extends Yaf_Controller_Abstract{
private $model;
public function init() {
$this->model = new TestModel();
}
public function test(){
$this->model->testDeclaration();
}
}
class TestModel{
public function testDeclaration(){
}
}
在这个例子中,我想使用'go to declaration
'从测试函数$this->model->testDeclaration();
到TestModel
class中的testDeclaration()
函数。但是没用。
PhpStorm 告诉我:
Cannot find declaration to go to
如何在此处正确使用 'go to declaration'?
In other class, PhpStorm can identify __construct()
function, but in yaf controller it can not identify the initialization method init()
, resulting in the init()
can not trace initialization operation.
PhpStorm 对 __constructor()
有特殊处理——它跟踪 class variable/property 如果在方法主体中有任何赋值操作将获得什么类型。
例如,在此代码中,它知道 $this->model
将是 TestModel
class 的实例——IDE 甚至在 [=11 之外保留此信息=] 方法体.
对于其他方法,例如您的 init()
,此类信息会在外部丢弃(因此它仅在方法主体中是本地的)。
您可以通过使用带有 @var
标记的简单 PHPDoc 注释轻松解决此问题,您将为 model
属性:
提供类型提示
/** @var \TestModel Optional description here */
private $model;
养成为所有 properties/class 变量提供类型提示的习惯,即使 IDE 自动检测其类型——它有助于 IDE in long 运行。
https://phpdoc.org/docs/latest/references/phpdoc/tags/var.html
在其他class中,PhpStorm可以识别__construct()
函数,但是在yaf controller中无法识别初始化方法init()
,导致init()
无法识别跟踪初始化操作。
class TestController extends Yaf_Controller_Abstract{
private $model;
public function init() {
$this->model = new TestModel();
}
public function test(){
$this->model->testDeclaration();
}
}
class TestModel{
public function testDeclaration(){
}
}
在这个例子中,我想使用'go to declaration
'从测试函数$this->model->testDeclaration();
到TestModel
class中的testDeclaration()
函数。但是没用。
PhpStorm 告诉我:
Cannot find declaration to go to
如何在此处正确使用 'go to declaration'?
In other class, PhpStorm can identify
__construct()
function, but in yaf controller it can not identify the initialization methodinit()
, resulting in theinit()
can not trace initialization operation.
PhpStorm 对 __constructor()
有特殊处理——它跟踪 class variable/property 如果在方法主体中有任何赋值操作将获得什么类型。
例如,在此代码中,它知道 $this->model
将是 TestModel
class 的实例——IDE 甚至在 [=11 之外保留此信息=] 方法体.
对于其他方法,例如您的 init()
,此类信息会在外部丢弃(因此它仅在方法主体中是本地的)。
您可以通过使用带有 @var
标记的简单 PHPDoc 注释轻松解决此问题,您将为 model
属性:
/** @var \TestModel Optional description here */
private $model;
养成为所有 properties/class 变量提供类型提示的习惯,即使 IDE 自动检测其类型——它有助于 IDE in long 运行。
https://phpdoc.org/docs/latest/references/phpdoc/tags/var.html