Pergunta

É assim que eu queria fazer, que funcionaria no PHP 5.3.0+

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

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

Mas estou restrito a usar o PHP 5.2.6.Alguém consegue pensar em uma maneira simples de simular esse comportamento sem instanciar a classe?

Foi útil?

Solução

Você pode fazer isso sem usar eval no código pré-5.3.Basta usar o constant função:

<?php

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

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

?>

Outras dicas

Se você realmente precisa acessar uma constante como essa, você pode fazer isso:

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

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

Mas, se eu fosse você, tentaria não usar eval.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top