2010-06-27 5 views
2

어떻게 사용자 정의 클래스 이름으로 정적 PHP 변수에 액세스 할 수 있습니까? 안녕하세요 클래스 c1 메서드() 내 자식 클래스의 정적 변수에 액세스해야합니다. 내 마음에 튀어 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(); 

답변

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']; 
+0

어떤 성능에 대해를? 속성 하나를 얻으려면 실제로 개체를 만들어야합니까? – codez

+1

두 번째 선택 항목으로 편집 됨. – Lukman

1

한 가지 방법은 eval("return $cn::\$b;")하지만 신중하게 사용합니다. 입력이 제대로 살균되지 않으면 평가판이 보안 결함을 만들 수 있습니다.

관련 문제