如何将函数的输出数组分配给PHP中的变量?

时间:2013-05-17 00:31:29

标签: php oop

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

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

1 个答案:

答案 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()。