Pregunta

Así es como quería hacerlo, que funcionaría en PHP 5.3.0+

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

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

Pero estoy restringido a usar PHP 5.2.6.¿Alguien puede pensar en una forma sencilla de simular este comportamiento sin crear una instancia de la clase?

¿Fue útil?

Solución

Puedes lograr esto sin usar eval en código anterior a 5.3.Sólo usa el constant función:

<?php

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

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

?>

Otros consejos

Si es absolutamente necesario acceder a una constante como esa, puedes hacer esto:

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

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

Pero, si fuera usted, intentaría no utilizar eval.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top