我有一个关于"动态"类初始化的问题,让我解释一下我的意思:
$class = 'User';
$user = new $class();
//...is the same as doing
$user = new User();
Run Code Online (Sandbox Code Playgroud)
所以......这不是问题所在,但是在从类中调用静态变量时遇到同样的问题,例如:
$class = 'User';
print $class::$name;
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误:
解析错误:语法错误,意外T_PAAMAYIM_NEKUDOTAYIM
当然,我已经测试过,print User::$name;并且有效.所以上课有效.
为什么会这样,有没有办法绕过它?
跟进问题:
还有没有正确的理由不在创建类中使用这种"动态"方式?
如果你没有 PHP 5.3 及以上版本,并且你不想使用反射(在我看来这是一种矫枉过正 - 除非你想访问多个静态属性),你可以定义 getter 函数并通过 call_user_func 调用它():
class A {
public static $var = "Hello";
public static function getVar() {
return self::$var;
}
}
$className = "A";
echo call_user_func(array($className, 'getVar'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
958 次 |
| 最近记录: |