2014-06-11 172 views
26

如何检查常量是否在PHP类中定义?检查类常量是否存在

class Foo { 
    const BAR = 1; 
} 

有什么样property_exists()method_exists()类的常量?或者我可以只使用defined("Foo::BAR")

+1

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

回答

50

您可以检查是否恒定与下面的代码定义:

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

和'constant('className :: CONSTANT_NAME')'来检索它。 –

0

您可以使用该功能:

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; 
} 

或替代的版本使用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; 
}