有人能告诉我为什么这不起作用吗?这只是我试图在其他地方做什么的一个粗略例子。
$stuff = array(
'key' => __DIR__ . 'value'
);
然而,这会产生一个错误:
PHP Parse error: syntax error, unexpected '.', expecting ')' in /var/www/.../testing.php on line 6
此外,这项工作:
$stuff = array(
'key' => "{__DIR__} value"
);
第一段代码不起作用,因为它不是一个常量表达式,因为您试图连接两个字符串。初始类成员必须是常量。
来自文件:
[property]初始化必须是一个常数值,也就是说,它必须能够在编译时进行求值,并且必须不依赖于运行时信息才能进行求值。
不能在属性初始化中使用运算符。解决方法是使用构造函数:
public function __construct()
{
$this->stuff = array(
'key' => __DIR__ . 'value'
);
}
来自PHP文档:
此声明可能包括初始化,但是初始化必须是一个常数值,也就是说,它必须能够在编译时进行评估,并且不能依赖于运行时信息以便进行评估。
http://www.php.net/manual/en/language.oop5.properties.php
在构造函数上设置$stuff值
function __construct()
{
$this->$stuff = array(
'key' => __DIR__ . 'value'
);
}