Zend Framework 1.12。是否可以在函数init()中定义对象并将其用作全局对象

时间:2018-07-09 05:26:06

标签: php zend-framework phpstorm

如果我像这样在函数init()中调用对象,则无法使用自动完成功能:

class IndexController extends HiNStudio_Controller {

private $model_obj;

public function init() {
    $this -> model_obj = new Default_Model_Account();
}

public function indexAction() {
    $this -> model_obj ->  //(it should be something autocomplete here)
}

pic

如果我调用正确的函数名称,代码仍然可以正常工作。例如:

public function indexAction() {
    $this -> model_obj ->  checkLogin();
}

在任何情况下是否需要显示自动完成功能,而不是像这样在每个函数内调用Object:

class IndexController extends HiNStudio_Controller {

private $model_obj;

public function init() {

}

public function indexAction() {
    $this -> model_obj = new Default_Model_Account();
    $this -> model_obj ->  //(autocomplete is working here)
}

pic

2 个答案:

答案 0 :(得分:0)

我对PHP不太熟悉,但是我认为它与方法调用model_obj无法初始化有关。尝试用构造函数替换函数init。 http://php.net/manual/en/language.oop5.decon.php这意味着当您创建IndexController构造函数的新对象时,将始终设置model_obj变量。

答案 1 :(得分:0)

使用PHPDoc注释键入变量。

/** @var Default_Model_Account */
private $model_obj;

如果PhpStorm未在构造函数中初始化或未在与初始化时相同的方法中使用,则会释放变量类型。