我正试图像这样调用数组中的函数:
protected $settings = array(
'prefix' => $this->getPrefix(),
);
表达式不允许作为默认值字段
getPrefix()
public function getPrefix()
{
return "hello world";
}
我不能这样做?
答案 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";
}
}