在PHP中动态加载类和访问静态变量< = 5.2

时间:2011-07-01 16:17:16

标签: php

修改

我通过使用get_class_vars()获取所有类变量来解决它,然后从该数组中获取正确的属性(如果存在)。对我来说似乎很简单;如果有人有不同的解决方案,我很乐意听到它(或读它,我猜......):)

我正在尝试在动态加载的类中访问静态变量,如下所示:

$file::$disabled

(在上面的语句中,$ file显然引用了类的名称,$ disabled是我想要在类中访问的静态变量。)

在PHP 5.3上,这很好用;由于在较低版本上运行上述代码,我得到了臭名昭着的T_PAAMAYIM_NEKUDOTAYIM错误。

在使用旧版本的PHP时,我通常会遇到这个错误,就是为该变量创建一个getter函数,并使用call_user_func()获取该返回值。但是,为了便于使用此代码的开发人员,我希望将$ disabled作为一个简单的变量而不是函数。

我在声明中尝试了eval(),只是为了达到另一个死胡同。

有人知道如何才能实现这一目标吗?

1 个答案:

答案 0 :(得分:2)

一种选择是使用反射:

$rp = new ReflectionProperty($file, $disabled);
$value = $rp->getValue();

$rc = new ReflectionClass($file);
$value $rc->getStaticPropertyValue($disabled);