2013-05-17 76 views
0

下面是我的簡化代碼,它給了我錯誤。這可能是一件非常簡單的事情,但它讓我感到困惑。如何將函數的輸出數組分配給PHP中的變量?

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

您只能使用標量值,數組和空值作爲默認值。您可以在PHP手冊AFAIK上找到此信息。 – elclanrs

回答

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(),如果他們返回相同的值的所有時間。

相關問題