2008-08-07 28 views
7

Đây là cách tôi muốn làm điều đó mà sẽ làm việc trong PHP 5.3.0+Truy cập vào một thuộc tính CONST của hàng loạt các lớp

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

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

Nhưng tôi hạn chế để sử dụng PHP 5.2.6. Bất cứ ai có thể nghĩ ra một cách đơn giản để mô phỏng hành vi này mà không instantiating lớp?

Trả lời

10

Bạn có thể thực hiện việc này mà không cần sử dụng eval trong mã trước 5.3. Chỉ cần sử dụng chức năng constant:

<?php 

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

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

?> 
-1

Nếu bạn absolutly cần truy cập vào một hằng số như vậy, bạn có thể làm điều này:

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

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

Nhưng, nếu tôi là bạn, tôi sẽ cố gắng không để sử dụng eval.

Các vấn đề liên quan