2008-09-23 12 views
6

¿Cómo puedo verificar si una clase estática ha sido declarada? ex Dada la clasePhp Check Si se declara una clase estática

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

más adelante en el código ¿Cómo verifico:

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

por lo que no entiendo: Fatal error: 'bob' clase no se encuentra en el archivo.php línea 3

Respuesta

13

También puede comprobar la existencia de un método específico, incluso sin crear instancias de la clase

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

Si quieres ir un paso más allá y comprobar que "yippie" es en realidad estática, utilice el Reflection API (sólo PHP5)

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

o, puede combinar los dos enfoques

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