【问题标题】:string concatenation with constants字符串与常量的连接
【发布时间】:2016-06-23 10:15:11
【问题描述】:

我目前的主机只有 PHP 5.4 可用,而且我的代码中的类常量总是出错。显然,不允许定义数组常量。我将常量更改为静态变量以使其工作。现在我得到这个语法错误:

    syntax error, unexpected '.', expecting ']'

我尝试定义由串联常量组成的字符串。

public static $arr = [KEY_ONE => "string " . MyClass::CONSTANT . " string"]

这可能吗,还是现在所有常量都必须是静态变量?

【问题讨论】:

  • 可能是运算符偏好的问题,您是否尝试在连接周围加上括号?比如[KEY_ONE => ("string " . MyClass::CONSTANT . " string")]

标签: php constants php-5.4


【解决方案1】:

在变量声明中不能进行操作。既不是串联也不是数学运算。

你可以在构造方法中做到这一点;

public static $arr = [];

public function __construct(){
  self::$arr = [KEY_ONE => "string " . MyClass::CONSTANT . " string"];
}

【讨论】:

  • 如果您不想实例化对象,则可以使用某种init() 方法。
  • PHP 5.4 的这个限制在这里被告知:php.net/manual/en/language.oop5.properties.php(参见示例 #1 属性声明)。自 PHP 5.6 起引入了在类成员变量中进行连接的可能性。
【解决方案2】:

如果你正在制作数组试试这样:

public static $arr = array("KEY_ONE" => "string " . MyClass::CONSTANT . " string");

【讨论】:

    猜你喜欢
    • 2017-04-17
    • 2023-03-08
    • 2021-04-12
    • 2015-05-05
    • 2010-12-18
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    相关资源
    最近更新 更多