Php 使用自定义类名访问静态变量
如何使用自定义类名访问静态php变量。在c1类方法hi中,我需要访问其子类的静态变量。PHP<5.3Php 使用自定义类名访问静态变量,php,oop,Php,Oop,如何使用自定义类名访问静态php变量。在c1类方法hi中,我需要访问其子类的静态变量。PHP
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();
一种突然出现在我脑海中的方法是eval return$cn::\$b;但是要小心使用。如果输入未正确消毒,Eval可能会造成一些严重的安全漏洞。您可以使用ReflectionClass: 或获取类变量:
性能如何?我真的需要创建对象来获取一个属性的值吗?
$cn=get_class($this);
$cl=new ReflectionClass($cn);
echo $cl->getStaticPropertyValue('b');
$cn=get_class($this);
$props=get_class_vars($cn);
echo $props['b'];