2014-06-11 29 views
26

Làm cách nào để kiểm tra xem một hằng số có được xác định trong lớp PHP không?Kiểm tra xem hằng số lớp có tồn tại không

class Foo { 
    const BAR = 1; 
} 

Có cái gì đó như property_exists() hoặc method_exists() cho hằng số lớp học? Hoặc tôi chỉ có thể sử dụng defined("Foo::BAR")?

+1

Xem http://stackoverflow.com/questions/956401/can-i- get-consts-defined-on-a-php-class – Fluffeh

Trả lời

50

Bạn có thể kiểm tra nếu một hằng số được định nghĩa với mã dưới đây:

<?php 
if(defined('className::CONSTANT_NAME')){ 
    //defined 
}else{ 
    //not defined 
} 
+0

và 'hằng số ('className :: CONSTANT_NAME')' để truy xuất nó. –

0

Bạn có thể sử dụng chức năng rằng:

function constant_exists($class, $name){ 
    if(is_string($class)){ 
     return defined("$class::$name"); 
    } else if(is_object($class)){ 
     return defined(get_class($class)."::$name"); 
    } 
    return false; 
} 

Hoặc phiên bản thay thế sử dụng ReflectionClass

function constant_exists($class, $name) { 
    if(is_object($class) || is_string($class)){ 
     $reflect = new ReflectionClass($class); 
     return array_key_exists($name, $reflect->getConstants()); 
    } 
    return false; 
} 
Các vấn đề liên quan