1

我正在刷新我的 PHP 知识,但遇到了一个我自己无法解决的问题:

我有一个带有两个私有静态数组的类,我想将它们存储为另一个(多维)静态类数组的值,但我总是收到 *unexpected T_VARIABLE* 错误。这是我的简单示例代码(仅使用一个而不是两个静态数组来填充以下多维数组)失败:

class MyClass {
  private static $firstArr = array('a' => 'A', 'b' => 'B');

  private static $multiArr = array('a' => self::$firstArr);
}

我真的不明白这里有什么问题。我可以轻松地将self::$firstArr替换为$firstArr本身的数组声明,但无论如何我很想了解我在这里做错了什么。

所以欢迎任何评论!

干杯,罗曼。

4

1 回答 1

3

声明类属性时,您不能进行任何类型的额外评估。

private static $multiArr = array('a' => self::$firstArr);
//                Can't do this    -----^

文档中的链接

这个声明可能包括一个初始化,但这个初始化必须是一个常量值——也就是说,它必须能够在编译时被评估,并且不能依赖于运行时信息才能被评估。

避免复制/粘贴是对的 - 这种“运行时信息”通常在构造函数中完成。

于 2012-08-12T13:49:32.037 回答