如何检查常量是否在PHP类中定义?检查类常量是否存在
class Foo {
const BAR = 1;
}
有什么样property_exists()
或method_exists()
类的常量?或者我可以只使用defined("Foo::BAR")
?
如何检查常量是否在PHP类中定义?检查类常量是否存在
class Foo {
const BAR = 1;
}
有什么样property_exists()
或method_exists()
类的常量?或者我可以只使用defined("Foo::BAR")
?
是的,就在不断的名称前使用类名。
记住还要为字符串添加任何名称空间,又名:defined('my \ name \ space \ ClassName \ property') – polesen
您可以检查是否恒定与下面的代码定义:
<?php
if(defined('className::CONSTANT_NAME')){
//defined
}else{
//not defined
}
和'constant('className :: CONSTANT_NAME')'来检索它。 –
您可以使用该功能:
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;
}
见http://stackoverflow.com/questions/956401/can-i- get-consts-defined-on-a-php-class – Fluffeh