Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用自定义类名访问静态变量_Php_Oop - Fatal编程技术网

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

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

如何使用自定义类名访问静态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();

一种突然出现在我脑海中的方法是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'];