繁体   English   中英

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM