【发布时间】:2012-08-18 17:44:57
【问题描述】:
我有一个关于“动态”类初始化的问题,让我解释一下我的意思:
$class = 'User';
$user = new $class();
//...is the same as doing
$user = new User();
所以...这不是问题,但是我在从类中调用静态变量时遇到了一些麻烦,例如:
$class = 'User';
print $class::$name;
这给出了以下错误:
解析错误:语法错误,出现意外的 T_PAAMAYIM_NEKUDOTAYIM
当然,我已经测试过print User::$name; 并且有效。所以课堂有效。
为什么会这样?有办法解决吗?
跟进问题:
还有什么正当理由不使用这种“动态”方式来创建类?
【问题讨论】:
-
你不能混合动态和静态调用,这就是为什么不能调用 User::$$prop 和你的 $class::$name
-
我不喜欢这种做你想要达到的目标的方法。如何保证存储在字符串
$class中的类中有静态变量$name?如果你能保证,那么我认为没有理由将类名存储在变量中。 -
@ThomasClayson 是我的例子,我用它来加载在变量中都有相同“元数据”的插件类,例如版本和名称。所有插件类都在扩展和实现,以确保它们具有正确的结构和数据。