2008-08-07 6 views
7

Ésta es la forma en que quería hacerlo, que trabajaría en PHP 5.3.0+Acceso a un atributo de CONST serie de clases

<?php 
    class MyClass 
    { 
     const CONSTANT = 'Const var';   
    } 

    $classname = 'MyClass'; 
    echo $classname::CONSTANT; // As of PHP 5.3.0 
?> 

Pero yo estoy limitado a la utilización de PHP 5.2.6. ¿Alguien puede pensar en una forma simple de simular este comportamiento sin crear una instancia de la clase?

Respuesta

10

Puede lograr esto sin usar eval en el código pre-5.3. Simplemente use la función constant:

<?php 

class MyClass 
{ 
    const CONSTANT = 'Const var'; 
} 

$classname = 'MyClass'; 
echo constant("$classname::CONSTANT"); 

?> 
-1

Si absolutamente necesario para acceder a una constante de esa manera, usted puede hacer esto:

<?php 
class MyClass 
{ 
     const CONSTANT = 'Const var'; 
} 

$classname = 'MyClass'; 
echo eval('return '.$classname.'::CONSTANT;'); 
?> 

Pero, si yo fuera tú, me trato de no usar eval.

Cuestiones relacionadas