Question

C'est comme ça que je voulais le faire, ce qui fonctionnerait en PHP 5.3.0+

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

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

Mais je suis limité à l'utilisation de PHP 5.2.6.Quelqu'un peut-il penser à un moyen simple de simuler ce comportement sans instancier la classe ?

Était-ce utile?

La solution

Vous pouvez accomplir cela sans utiliser eval dans le code pré-5.3.Utilisez simplement le constant fonction:

<?php

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

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

?>

Autres conseils

Si vous avez absolument besoin d’accéder à une constante comme celle-là, vous pouvez faire ceci :

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

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

Mais si j'étais vous, j'essaierais de ne pas utiliser eval.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top