使用自定义类名访问静态变量

时间:2010-06-27 05:49:23

标签: php oop

如何使用自定义类名访问静态php变量。在类c1方法hi()中,我需要访问其子类的静态变量。 PHP< 5.3

class c1{
  function hi(){
    $cn=get_class($this);
    echo $cn::$b; //need echo 5 here, but error
  }
}
class c2 extends c1{
  static public $b=5;
}

$c2=new c2();
$c2->hi();

2 个答案:

答案 0 :(得分:4)

您可以使用ReflectionClass

$cn=get_class($this);
$cl=new ReflectionClass($cn);
echo $cl->getStaticPropertyValue('b');

get_class_vars()

$cn=get_class($this);
$props=get_class_vars($cn);
echo $props['b'];

答案 1 :(得分:1)

突然出现在我脑海中的一种方式是eval( "return $cn::\$b;" ),但要谨慎使用。如果输入没有正确清理,Eval会产生一些讨厌的安全漏洞。