2008-08-07 4 views
7

Dies ist, wie ich es tun wollte, die funktionieren würde in PHP 5.3.0+ein CONST Attribut Reihe von Klassen Zugriff auf

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

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

Aber ich bin beschränkt mit PHP 5.2.6. Kann jemand an eine einfache Möglichkeit denken, dieses Verhalten zu simulieren, ohne die Klasse zu instanziieren?

Antwort

10

Sie können dies tun, ohne eval in Code vor 5.3 zu verwenden. Verwenden Sie einfach die constant Funktion:

<?php 

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

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

?> 
-1

Wenn Sie absolutly eine Konstante wie die zugreifen müssen, können Sie dies tun:

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

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

Aber, wenn ich Sie wäre, würde ich versuchen, nicht eval zu verwenden.

Verwandte Themen