Php Проверка Если объявлен статический класс


6

Как я могу проверить, был ли объявлен статический класс? экс Учитывая класс

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

позже в коде как я проверить:

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

так я не получаю: Фатальная ошибка: Class 'боб' не найден в file.php на линия 3

13

Вы можете также проверить наличие конкретного метода, даже без экземпляра класса

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

Если вы хотите пойти на один шаг дальше и убедитесь, что «Юппи» на самом деле статичен, используйте Reflection API (только 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(); 
} 

или вы могли бы объединить эти два подхода

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

8

bool class_exists(string $class_name [, bool $autoload ])

This function checks whether or not the given class has been defined.