Проверка Php, если объявлен статический класс - PullRequest
9 голосов
/ 24 сентября 2008

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

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

позже в коде, как мне проверить:

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

так что я не понимаю: Неустранимая ошибка: класс 'bob' не найден в file.php в строке 3

Ответы [ 2 ]

16 голосов
/ 24 сентября 2008

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

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

Если вы хотите пойти еще дальше и убедиться, что «yippie» действительно статичен, используйте 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 голосов
/ 24 сентября 2008

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

Эта функция проверяет, был ли задан данный класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...