公共静态变量值

Ale*_*lex 7 php variables static class 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 ...
 }
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:

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

dec*_*eze 10

声明类属性时不能使用表达式.即你不能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();
Run Code Online (Sandbox Code Playgroud)

或者,__construct如果您要实例化该类,请执行此操作.