我有这样的代码:
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
);
这给了我以下错误:
解析错误:语法错误,在/home/user/ sites /site/registration/inc/registration.class中出现意外的'(',期望')'。第19行
所以,我想我做错了什么…但如果不是那样,我怎么能这样做呢?如果我用常规字符串改变mktime,它就能工作。所以我知道我可以这样做。
有人有什么建议吗?
如果你可以控制类加载,你可以从那里进行静态初始化。
例子:
class MyClass { public static function static_init() { } }
在你的类装入器中,执行以下操作:
include($path . $klass . PHP_EXT);
if(method_exists($klass, 'static_init')) { $klass::staticInit() }
一个更重量级的解决方案是使用ReflectionClass接口:
interface StaticInit { public static function staticInit() { } }
class MyClass implements StaticInit { public static function staticInit() { } }
在你的类装入器中,执行以下操作:
$rc = new ReflectionClass($klass);
if(in_array('StaticInit', $rc->getInterfaceNames())) { $klass::staticInit() }
如果你可以控制类加载,你可以从那里进行静态初始化。
例子:
class MyClass { public static function static_init() { } }
在你的类装入器中,执行以下操作:
include($path . $klass . PHP_EXT);
if(method_exists($klass, 'static_init')) { $klass::staticInit() }
一个更重量级的解决方案是使用ReflectionClass接口:
interface StaticInit { public static function staticInit() { } }
class MyClass implements StaticInit { public static function staticInit() { } }
在你的类装入器中,执行以下操作:
$rc = new ReflectionClass($klass);
if(in_array('StaticInit', $rc->getInterfaceNames())) { $klass::staticInit() }