2012-03-05 18 views
43

È questo l'unico modo per verificare se un oggetto è un'istanza di una classe, nel mio caso della classe DateTime?Controllo PHP per istanza di DateTime?

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

Sembra un po 'pesante per me.

+0

Vedi anche: [Come sapere di che classe è un'istanza di oggetto? (php5)] (http://stackoverflow.com/questions/1928491/how-to-know-what-class-is-an-object-instance-of-php5) (Non proprio un duplicato) – hakre

risposta

108

Si potrebbe provare instanceof­Docs ...

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

Vedi anche is_a­Docs:

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

Man, I didn non trovo nulla su quello con google ..:/Grazie! –

+2

Grazie amico! ore di mal di testa sono sparite! –

7

if ($var instanceof DateTime)

6

È possibile utilizzare get_class funzione come questa:

<?php 

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

Per qualche motivo questo ha funzionato, e gli altri no. – redolent

+2

@redolent Se si utilizza Symfony o qualche altro framework che utilizza gli spazi dei nomi, potrebbe essere necessario dichiarare 'use \ DateTime' nella parte superiore del file per cercare" DateTime' nello spazio dei nomi radice (non nello spazio dei nomi dell'app) . –