首頁  >  文章  >  後端開發  >  PHP中的is_a()函數和instanceof有什麼不同?

PHP中的is_a()函數和instanceof有什麼不同?

青灯夜游
青灯夜游原創
2019-03-06 10:06:523367瀏覽

在PHP中is_a()函數和instanceof運算子的功能是相似的,那麼它們之間有什麼不同?以下這篇文章就來帶大家簡單了解is_a()函數和instanceof,介紹is_a()函數和instanceof的差別是什麼,希望對大家有幫助。 【影片教學推薦:PHP教學

#PHP  is_a()函數

#is_a()函數是PHP中的內建函數,用於檢查給定物件是否屬於給定類別;它還檢查給定的類別是否是給定物件的父類別之一。

基本語法:

is_a( $object, $class_name, $allow_string )

參數:is_a()函數可以接受以下三個參數

 ● object:用於保存測試對象。

 ● class_name:用於保存類別名稱。

 ● allow_string:如果設定的值為False,則不允許將字串類別名稱作為物件。

傳回值:如果物件屬於給定的類,或者此類作為其父類之一,則is_a()函數傳回True,否則將傳回False值。

下面透過程式碼範例來了解is_a()函數。

<?php  
class hello {  
    var $store = &#39;Hello PHP!&#39;;  
}  
    
$PHP= new hello();  
    
// 检查$PHP是否是hello类的对象
if (is_a($PHP, &#39;hello&#39;)) {  
    echo "Yes";  
}  
    
?>

輸出:

Yes

PHP  instanceof運算子

##在PHP中使用instanceof運算子來找出物件是否是類別的實例化實例。

基本語法:

$a instanceof MyClass

運算元:instanceof運算子包含以下兩個運算元

 ● $a:表示對象。

 ● MyClass:表示是一個類別名稱。

傳回值:如果物件屬於該給定的類,或將此類作為其父類之一,則傳回True,否則傳回False值。

下面透過程式碼範例來了解instanceof運算子。

<?php  
class hello {  
    var $store = &#39;Hello PHP!&#39;;  
}  
    
$PHP= new hello();  
    
// 检查$PHP是否是hello类的对象
if ($PHP instanceof hello) {  
    echo "Yes";  
}  
?>

輸出:

Yes

is_a()函數與instanceof運算子之間的差異

 ● is_a()是一個函數,而instanceof是一個語言結構。 is_a()函數將顯著變慢,因為它具有執行函數呼叫的所有開銷。

 ● 在函數回呼的情況下(如array_map),因為instanceof不是函數,它是一種語言構造,所以它不能用作回調。但,回調可以在is_a()函數中使用。

 ● InstanceOf中直接類別名稱的使用時間短於is_a()函數。

例:

//语法短(比较)
$a instanceof MyClass
is_a( $a, MyClass::class )

 ● is_a()是一個函數,它將一個物件作為參數1,將一個字串作為參數2,而instanceof將一個物件作為參數1,並且可以將類別名稱、物件實例或類別識別碼(不含引號的類別名稱)作為參數2。

is_a()的範例:

//只有这样才能调用它
is_a($object,$string);

instanceof範例:

//对象实例      
$object instanceof $otherObject; 
//字符串类名
$object instanceof $string;
//类的标识符
$object instanceof ClassName;

以上就是本篇文章的全部內容,希望對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !

以上是PHP中的is_a()函數和instanceof有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn