PHP中的is_a()函數和instanceof之間有什麼區別?

2019-11-01   科技i關注

在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()函數。

class hello {

var $store = 'Hello PHP!';

}

$PHP= new hello();

// 檢查$PHP是否是hello類的對象

if (is_a($PHP, 'hello')) {

echo "Yes";

}

?>

輸出:

Yes

PHP instanceof運算符

在PHP中使用instanceof運算符來查明對象是否是類的實例化實例。

基本語法:

$a instanceof MyClass

操作數:instanceof運算符包含以下兩個操作數

 $a:表示對象。

 MyClass:表示是一個類名。

返回值:如果對象屬於該給定的類,或者將此類作為其父類之一,則返回True,否則返回False值。

下面通過代碼示例來了解一下instanceof運算符。

class hello {

var $store = 'Hello PHP!';

}

$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中的is_a()函數和instanceof之間有什麼區別?的詳細內容,更多請關注其它相關文章!

更多技巧請《轉發 + 關注》哦!