2012-03-05 27 views
43

Czy jest to jedyny sposób sprawdzenia, czy obiekt jest instancją klasy, w moim przypadku klasy DateTime?Sprawdzanie PHP na przykład z DateTime?

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

Wydaje mi się to trochę trudne.

+0

Zobacz także: [Jak sprawdzić, z której klasy pochodzi obiekt? (php5)] (http://stackoverflow.com/questions/1928491/how-to-know-what-class-is-an-object-instance-of-php5) (Naprawdę nie jest duplikatem) – hakre

Odpowiedz

108

Można spróbować instanceof­Docs ...

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

Zobacz także is_a­Docs:

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

Man, I didn nie znajdziesz nic na temat tego z google ..:/Dziękuję! –

+2

Dziękuję człowieku! godziny bólu głowy minęły! –

6

Można użyć get_class funkcję tak:

<?php 

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

Z jakiegoś powodu ten zadziałał, a inni nie. – redolent

+2

@ redolent Jeśli używasz Symfony lub innego frameworka, który używa przestrzeni nazw, może być konieczne zadeklarowanie 'use \ DateTime' na górze pliku, aby znaleźć' DateTime' w głównej przestrzeni nazw (nie przestrzeń nazw twojej aplikacji) . –