0

下面是我的简化代码,它给了我错误。这可能是一件非常简单的事情,但它让我感到困惑。

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;(函数名后没有圆括号),它似乎工作正常。这是正常行为吗?我有点不确定。

4

1 回答 1

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() 始终返回相同的值,您可能不需要在同一个类中同时返回相同的值。

于 2013-05-17T00:39:21.613 回答