2012-03-05 19 views
43

¿Es esta la única forma de comprobar si un objeto es una instancia de una clase, en mi caso de la clase DateTime?verificación de PHP, por ejemplo, de DateTime?

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

Parece un poco pesado para mí.

+0

Ver también: [¿Cómo saber de qué clase es una instancia de objeto? (php5)] (http://stackoverflow.com/questions/1928491/how-to-know-what-class-is-an-object-instance-of-php5) (Realmente no es un duplicado) – hakre

Respuesta

108

Usted podría intentar instanceof­Docs ...

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

Ver también is_a­Docs:

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

Hombre, no lo hice No hay nada sobre eso con google ...: ¡Gracias! –

+2

Gracias hombre! ¡horas de dolor de cabeza desaparecieron! –

7

if ($var instanceof DateTime)

6

Puede utilizar get_class función como esta:

<?php 

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

Por alguna razón, este funcionó, y los otros no. – redolent

+2

@redolent Si está utilizando Symfony u otro framework que usa espacios de nombres, puede necesitar declarar 'use \ DateTime' en la parte superior de su archivo para que busque' DateTime' en el espacio de nombres raíz (no el espacio de nombres de su aplicación) . –

Cuestiones relacionadas