无法在数组中调用函数

时间:2016-02-04 14:35:06

标签: php

我正试图像这样调用数组中的函数:

protected $settings = array(
        'prefix' => $this->getPrefix(),
    );
  

表达式不允许作为默认值字段

getPrefix()

public function getPrefix()
{
    return "hello world";
}

我不能这样做?

2 个答案:

答案 0 :(得分:4)

根据您的protected关键字判断,您正在尝试设置对象属性。根据PHP manual

  

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

为了设置你的值,把它放到构造函数中:

class Settings
{
    protected $settings;

    public function __constructor() {
        $this->settings = array(
            'prefix' => $this->getPrefix(),
        );
    }

    public function getPrefix() {
        return "Hello, World!";
    }
}

答案 1 :(得分:2)

PHP编译时必须定义您的对象属性。但是,您只需在构造函数中初始化值即可。

class MyClass
{
    protected $settings = array();

    public function __construct()
    {
        $this->settings['prefix'] => $this->getPrefix()
    }

    public function getPrefix()
    {
        return "hello world";
    }
}