使用静态类数组声明多维静态PHP类数组时出错

时间:2012-08-12 13:44:45

标签: php oop static multidimensional-array

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

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

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

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

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

所以欢迎任何评论!

干杯, 罗马。

1 个答案:

答案 0 :(得分:3)

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

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

Link in docs

  

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

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