2012-03-05 44 views
43

Đây có phải là cách duy nhất để kiểm tra xem một đối tượng có phải là một thể hiện của một lớp hay không, trong trường hợp của tôi là lớp DateTime?Kiểm tra PHP ví dụ về DateTime?

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

Có vẻ hơi nặng với tôi.

+0

Xem thêm: [Làm thế nào để biết lớp nào là đối tượng của? (php5)] (http://stackoverflow.com/questions/1928491/how-to-know-what-class-is-an-object-instance-of-php5) (Không thực sự là một bản sao) – hakre

Trả lời

108

Bạn có thể thử instanceof­Docs ...

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

Xem thêm is_a­Docs:

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

Man, tôi didn 't tìm thấy bất cứ điều gì về điều đó với google ..:/Cảm ơn bạn! –

+2

Cảm ơn bạn! giờ đau đầu đã biến mất! –

6

Bạn có thể sử dụng chức năng get_class như thế này:

<?php 

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

Vì một lý do nào đó, điều này làm việc và những người khác thì không. – redolent

+2

@redolent Nếu bạn đang sử dụng Symfony hoặc một số khung công tác khác sử dụng không gian tên, bạn có thể cần khai báo 'use \ DateTime' ở đầu tệp để làm cho nó tìm kiếm' DateTime' trong không gian tên gốc (không phải là không gian tên của ứng dụng) . –