我有这个代码:
private static $dates = array(
'start' => mktime( 0, 0, 0, 7, 30, 2009), // Start date
'end' => mktime( 0, 0, 0, 8, 2, 2009), // End date
'close' => mktime(23, 59, 59, 7, 20, 2009), // Date when registration closes
'early' => mktime( 0, 0, 0, 3, 19, 2009), // Date when early bird discount ends
);
这给了我以下错误:
Parse error: syntax error, unexpected '(', expecting ')' in /home/user/Sites/site/registration/inc/registration.class.inc on line 19
所以,我想我做错了什么……但如果不是那样,我该怎么做呢?如果我用常规字符串更改 mktime 内容,它就可以工作。所以我知道我可以这样做有点像那样..
有人指点一下吗?
最佳答案
PHP 无法解析初始化程序中的重要表达式。
我更喜欢在类的定义之后添加代码来解决这个问题:
class Foo {
static $bar;
}
Foo::$bar = array(…);
或
class Foo {
private static $bar;
static function init()
{
self::$bar = array(…);
}
}
Foo::init();
PHP 5.6现在可以处理一些表达式了。
/* For Abstract classes */
abstract class Foo{
private static function bar(){
static $bar = null;
if ($bar == null)
bar = array(...);
return $bar;
}
/* use where necessary */
self::bar();
}
关于php - 如何初始化静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/693691/