公共静态变量值

时间:2011-06-28 01:44:39

标签: php class variables static public

我正在尝试声明一个公共静态变量,它是一个数组数组:

class Foo{
 public static $contexts = array(
    'a' => array(
      'aa'              => something('aa'),
      'bb'              => something('bb'),
    ),

    'b' => array(
      'aa'              => something('aa'),
      'bb'              => something('bb'),
    ),

  );

 // methods here

 }

 function something($s){
   return ...
 }

但是我收到了一个错误:

  

解析错误:解析错误,期待   '')''在......

1 个答案:

答案 0 :(得分:9)

声明类属性时不能使用表达式。即你不能在这里拨打something(),你只能使用静态值。您必须在代码中以某种方式设置这些值。

  

与任何其他PHP静态变量一样,静态属性只能使用文字或常量初始化;表达式是不允许的。因此,虽然您可以将静态属性初始化为整数或数组(例如),但您可能不会将其初始化为另一个变量,函数返回值或对象。

     

http://www.php.net/manual/en/language.oop5.static.php

例如:

class Foo {
    public static $bar = null;

    public static function init() {
       self::$bar = array(...);
    }
}

Foo::init();

如果您要实例化该类,请在__construct中执行。