下面是我的简化代码,它给了我错误。这可能是一件非常简单的事情,但它让我很困惑。
class MyController extends ParentController {
public $pet_list = $this->pet_list_array();
//Parse error: syntax error, unexpected T_VARIABLE in ......
public function pet_list_array() {
return array('cat'=>'Steve\'s Cat',
'dog'=>'Fiona\'s Dog',
'lion'=>'John\'s Lion');
}
}
如果我这样做,我会得到一个不同的错误
public $pet_list = pet_list_array();
//Parse error: syntax error, unexpected '(', expecting ',' or ';' in.....
但是如果我这样做public $pet_list = pet_list_array;
(没有函数名后的圆括号),它似乎工作正常。这是正常行为吗?我有点不确定。
答案 0 :(得分:2)
您的问题是您无法在类定义中调用类方法。创建一个__construct()方法并将其设置在那里,如下所示:
class MyController extends ParentController {
public $pet_list;
public function __construct(){
$this->pet_list = $this->pet_list_array();
}
public function pet_list_array() {
return array('cat'=>'Steve\'s Cat',
'dog'=>'Fiona\'s Dog',
'lion'=>'John\'s Lion');
}
}
当然,如果他们一直返回相同的值,你可能不需要在同一个类中同时使用$ pet_list和pet_list_array()。