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 に答える