Domanda

Questo è il modo in cui volevo farlo, che funzionerebbe in PHP 5.3.0+

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

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

Ma sono limitato a utilizzare PHP 5.2.6.Qualcuno riesce a pensare a un modo semplice per simulare questo comportamento senza istanziare la classe?

È stato utile?

Soluzione

Puoi farlo senza usare eval nel codice precedente alla 5.3.Basta usare il constant funzione:

<?php

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

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

?>

Altri suggerimenti

Se hai assolutamente bisogno di accedere a una costante del genere, puoi farlo:

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

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

Ma, se fossi in te, proverei a non usare eval.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top