Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何分配函数';将数组输出到PHP中的变量?_Php_Oop - Fatal编程技术网

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

如何分配函数';将数组输出到PHP中的变量?,php,oop,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() { r

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

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

您的问题是无法在类定义中调用类方法。创建一个_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()始终返回相同的值,则可能不需要在同一个类中同时使用它们。

默认情况下,只能使用标量值、数组和
null
。您可以在PHP手册AFAIK中找到此信息。