将__DIR__常量与字符串连接为数组值,该值是PHP中的类成员


Concatenating __DIR__ constant with a string as an array value which is a class member in PHP

有人能告诉我为什么这不起作用吗?这只是我试图在其他地方做什么的一个粗略例子。

$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'
    );
}