如何使用自定义类名访问静态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();
答案 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会产生一些讨厌的安全漏洞。