2014-06-11 23 views
26

Wie kann ich überprüfen, ob eine Konstante in einer PHP-Klasse definiert ist?Überprüfen Sie, ob eine Klassenkonstante existiert

class Foo { 
    const BAR = 1; 
} 

Gibt es so etwas wie property_exists() oder method_exists() für Klassenkonstanten? Oder kann ich einfach defined("Foo::BAR") verwenden?

+1

Siehe http://stackoverflow.com/questions/956401/can-i- mit get-costs-defined-on-php-Klasse – Fluffeh

Antwort

50

Sie können prüfen, ob eine Konstante mit dem Code unten definiert ist:

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

und 'constant ('className :: CONSTANT_NAME')', um es abzurufen. –

0

Sie diese Funktion verwenden können:

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

oder alternative Version 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; 
} 
Verwandte Themen