is_object()是PHP語言內置的函數(shù)之一,它用來檢測一個變量是否是對象。
在面向對象編程中,將一個變量賦予對象的值,則該變量就成為了一個對象。然而,有時候也存在變量賦值錯誤的情況,導致變量并不是對象。這時就需要用到is_object()函數(shù)來檢測。
$class = new MyClass(); if(is_object($class)){ // $class是對象 }
此處,我們對對象$class使用is_object()函數(shù)進行檢測,若返回true則表示$class確實是對象,否則并不是。
is_object()函數(shù)同樣適用于檢測類屬性。以下代碼演示了檢測屬性$property是否為對象:
class MyClass{ public $property = null; } $class = new MyClass(); if(is_object($class->property)){ // $class->property是對象 }
如果我們只有一個變量,或者需要對多個變量進行檢測,就需要使用循環(huán)遍歷。
$class1 = new MyClass1(); $class2 = new MyClass2(); $class3 = new MyClass3(); $classes = array($class1, $class2, $class3); foreach($classes as $class){ if(is_object($class)){ // $class是對象 } }
由上述代碼可知,我們通過將需要檢測的對象存儲在數(shù)組$classes中,再使用foreach循環(huán)每一個元素,從而檢測所有對象是否為真正的對象。
is_object()的另一個重要應用是檢測對象是否能被序列化。
class Test{ public $property = null; } $obj = new Test(); $serialize = serialize($obj); if(is_object(unserialize($serialize))){ // $obj可被序列化 }
以上代碼將一個對象$obj序列化并進行逆轉義(unserialize),若成功則表示該對象可以被序列化。
最后提醒一下:
is_object()函數(shù)是PHP內置函數(shù)之一,所以不需要進行特殊引入。該函數(shù)僅能檢測變量是否為對象,無法判斷變量是否包含對象(如數(shù)組中有一個元素為對象,此時檢測該數(shù)組并不是對象)。
在實際開發(fā)中,合理使用is_object()函數(shù)可以避免很多不必要的錯誤。