如何在PHP中设置属性时正确调用方法(如果可能的话)

Jan*_*lem 0 php oop class

我想知道为什么这不起作用?我正在设置一个属性(数组)和一个从类中的方法得到的值,我想我正在做一些我不应该做的事情,但我会非常感谢这两个解释为什么它不工作以及如何运作;)

我是新手

 Class Widget{

    public $settings = array('setting1',array(
    'subsetting1'=> 1, 
    'subsetting2' =>$this->WidgetFunction()
    ));

             function WidgetFunction() {
             echo 'works';
             }
}
Run Code Online (Sandbox Code Playgroud)

获得以下错误:

    Parse error: syntax error, unexpected T_VARIABLE on line 7 
(where WidgetFunction is called)
Run Code Online (Sandbox Code Playgroud)

Cze*_*ogy 8

PHP手册:

类成员变量称为"属性".[...]它们是通过使用public,protected或private之一,然后是普通变量声明来定义的.此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估.

您应该在构造函数中指定此值.

Class Widget {

  public $settings;

  function __construct() {
    $this->settings = array(
      'setting1' => array(
        'subsetting1' => 1, 
        'subsetting2' => $this->WidgetFunction())
    );
  }

  function WidgetFunction() {
    echo 'works';
  }
}
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,我想你可能想用'setting1'作为数组中数组的索引 - 正如我在我的代码示例中所做的那样?)