2008-08-07 33 views
7

的一個const屬性這是我想要做這將在PHP 5.3.0+訪問系列類

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

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

工作,但是我只能使用PHP 5.2.6。任何人都可以想到一個簡單的方法來模擬這種行爲,而不需要實例化類?

回答

10

您可以在5.3版之前的代碼中不使用eval來完成此操作。只需使用constant功能:

<?php 

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

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

?> 
-1

如果你是絕對需要訪問這樣一個常數,你可以這樣做:

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

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

但是,如果我是你,我會盡量不使用eval。