php static variable initialization
Possible Duplicate:
Syntax error while defining an array as a property of a class
我正在尝试执行以下操作:
1 2 3 4 | final class TestClass { public static $myvar = 10*10; //line 3 //rest of code... } |
但我得到了这个错误:
为什么不可能?当然,如果我把10*10改成100,一切正常。不允许用数学计算初始化静态变量吗?以任何方式都不可能?
来自PHP文档
Like any other PHP static variable, static properties may only be initialized using a literal or constant; expressions are not allowed. So while you may initialize a static property to an integer or array (for instance), you may not initialize it to another variable, to a function return value, or to an object.
我认为您必须在类上创建一个静态init方法,如下所示
1 2 3 4 5 6 7 8 | final class TestClass { public static $myvar = null; //line 3 public static function init() { self::$myvar = 10*10; } //rest of code... } |
然后像这样先调用init
1 | TestClass::init(); |
这是静态的方式
不,在静态/非静态初始化中不可能做任何事情。只能设置简单变量(protected$_value=10;)或构建数组(protected static$_arrr=array("key"=>"value"))。
在重新初始化类之前,可以创建az initialize静态方法和要检查的$u isinitialized静态字段,但必须以某种方式调用initialize方法(在构造函数、同一工厂实现等中)。
不允许。类属性(甚至静态属性)只能由值初始化,不能由表达式初始化。