如果我像这样在函数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)
}
如果我调用正确的函数名称,代码仍然可以正常工作。例如:
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)
}
答案 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未在构造函数中初始化或未在与初始化时相同的方法中使用,则会释放变量类型。