【问题标题】:Dynamically Load Class and Access Static Variable in PHP <= 5.2在 PHP <= 5.2 中动态加载类和访问静态变量
【发布时间】:2011-07-01 16:17:16
【问题描述】:

编辑:

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

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

$file::$disabled

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

在 PHP 5.3 上,这可以正常工作;由于在较低版本上运行上述代码,我得到了臭名昭著的 T_PAAMAYIM_NEKUDOTAYIM 错误。

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

我已经在语句上尝试了 eval() ,结果却走到了另一个死胡同。

有人知道我怎样才能做到这一点吗?

【问题讨论】:

    标签: php


    【解决方案1】:

    一种选择是使用反射:

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

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

    【讨论】:

    • 是的,我也考虑过这个选项,但我希望它适用于 PHP 5 下的版本。我正在与之合作的一些开发人员......怀旧:P 谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    相关资源
    最近更新 更多