Frage

So wollte ich es machen, was in PHP 5.3.0+ funktionieren würde

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

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

Aber ich bin auf die Verwendung von PHP 5.2.6 beschränkt.Kann sich jemand eine einfache Möglichkeit vorstellen, dieses Verhalten zu simulieren, ohne die Klasse zu instanziieren?

War es hilfreich?

Lösung

Sie können dies ohne Verwendung erreichen eval im Code vor 5.3.Benutzen Sie einfach die constant Funktion:

<?php

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

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

?>

Andere Tipps

Wenn Sie unbedingt auf eine solche Konstante zugreifen müssen, können Sie Folgendes tun:

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

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

Aber an deiner Stelle würde ich versuchen, eval nicht zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top