2012-03-05 2 views
43

Это единственный способ проверить, является ли объект экземпляром класса, в моем случае класса DateTime?PHP проверяет, например, DateTime?

$cls = ReflectionClass("DateTime"); 
if (! $cls->isInstance((object) $var)) { 
    // is not an instance 
} 

Это кажется немного тяжелым для меня.

+0

См. Также: [Как узнать, какой класс является экземпляром объекта? (php5)] (http://stackoverflow.com/questions/1928491/how-to-know-what-class-is-an-object-instance-of-php5) (Не совсем дубликат) – hakre

ответ

108

Вы можете попробовать instanceof­Docs ...

if ($var instanceof DateTime) { 
    // true 
} 

Смотрите также is_a­Docs:

if (is_a($var, 'DateTime')) { 
    // true 
} 
+6

Человек, я didn Не найди ничего об этом с Google.:/Спасибо! –

+2

Спасибо, человек! часы головной боли исчезли! –

6

Вы можете использовать get_class функцию следующим образом:

<?php 

    $a = new DateTime(); 
    if (get_class($a) == 'DateTime') { 
     echo "Datetime"; 
    } 
+0

По какой-то причине это работало, а другие - нет. – redolent

+2

@redolent Если вы используете Symfony или какую-либо другую структуру, которая использует пространства имен, вам может потребоваться объявить 'use \ DateTime' в верхней части вашего файла, чтобы он искал' DateTime' в корневом пространстве имен (а не в пространстве имен вашего приложения) , –

Смежные вопросы