2008-09-23 16 views
6

Wie kann ich überprüfen, ob eine statische Klasse deklariert wurde? ex Angesichts der KlassePhp Check Wenn eine statische Klasse deklariert wird

class bob { 
    function yippie() { 
     echo "skippie"; 
    } 
} 

im Code später Wie prüfe ich:

if(is_a_valid_static_object(bob)) { 
    bob::yippie(); 
} 

so bekomme ich nicht: Fatal error: Class 'bob' nicht in file.php auf gefunden Linie 3

Antwort

13

Sie können auch auf die Existenz eines spezifischen Verfahrens überprüfen, auch ohne die Klasse instanziieren

echo method_exists(bob, 'yippie') ? 'yes' : 'no'; 

Wenn Sie einen Schritt weiter gehen wollen und stellen Sie sicher, dass „Yippie“ tatsächlich statisch ist, verwenden Sie die Reflection API (PHP5 nur)

try { 
    $method = new ReflectionMethod('bob::yippie'); 
    if ($method->isStatic()) 
    { 
     // verified that bob::yippie is defined AND static, proceed 
    } 
} 
catch (ReflectionException $e) 
{ 
    // method does not exist 
    echo $e->getMessage(); 
} 

oder könnten Sie die beiden Ansätze kombinieren

if (method_exists(bob, 'yippie')) 
{ 
    $method = new ReflectionMethod('bob::yippie'); 
    if ($method->isStatic()) 
    { 
     // verified that bob::yippie is defined AND static, proceed 
    } 
}