2010-06-27 6 views
2

Comment puis-je accéder à une variable php statique avec un nom de classe personnalisé? Dans la classe c1, méthode hi(), j'ai besoin d'accéder à la variable statique de sa classe enfant. PHP < 5,3Accès à une variable statique avec un nom de classe personnalisé

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(); 

Répondre

4

Vous pouvez utiliser ReflectionClass:

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

Ou get_class_vars():

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

performances? Ai-je vraiment besoin de créer un objet juste pour obtenir la valeur d'une propriété? – codez

+1

édité avec second choix;) – Lukman

1

Une façon qui a surgi dans mon esprit est eval("return $cn::\$b;") mais à utiliser avec précaution. Eval peut créer des trous de sécurité désagréables si l'entrée n'est pas correctement filtrée.

Questions connexes