PhpStorm不支持​​yaf的init方法

时间:2017-04-11 07:50:15

标签: phpstorm yaf

在其他类中,PhpStorm可以识别__construct()函数,但在yaf控制器中它无法识别初始化方法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();中的“testDeclaration()”到TestModel函数。但它不起作用。

PhpStorm告诉我:

  

无法找到声明转到

如何在这里正确使用'去声明'?

1 个答案:

答案 0 :(得分:1)

  

在其他类中,PhpStorm可以识别__construct()函数,但在yaf控制器中它无法识别初始化方法init(),导致init()无法跟踪初始化操作。

PhpStorm对__constructor()有特殊处理 - 如果它在方法体内有任何赋值操作,它会跟踪什么类型的类变量/属性。

例如,在此代码中,它知道$this->model将是TestModel类的实例 - IDE甚至将此信息保存在__construct()方法体之外。

对于其他方法,例如您的init(),这些信息会被丢弃(因此它只在方法体的本地)。

您可以使用@var标记的简单PHPDoc注释轻松解决此问题,您将为model属性提供类型提示:

/** @var \TestModel Optional description here */
private $model;

养成为所有属性/类变量提供类型提示的习惯,即使IDE自动检测其类型 - 它可以帮助IDE长期运行。

https://phpdoc.org/docs/latest/references/phpdoc/tags/var.html