在PHP中is_a()函數(shù)和instanceof運算符的功能是相似的,那么它們之間有什么區(qū)別?下面本篇文章就來帶大家簡單了解一下is_a()函數(shù)和instanceof,介紹is_a()函數(shù)和instanceof的區(qū)別是什么,希望對大家有所幫助。
PHP is_a()函數(shù)
is_a()函數(shù)是PHP中的內(nèi)置函數(shù),用于檢查給定對象是否屬于給定類;它還檢查給定的類是否是給定對象的父類之一。
基本語法:
is_a( $object, $class_name, $allow_string )
參數(shù):is_a()函數(shù)可以接受以下三個參數(shù)
● object:用于保存測試對象。
● class_name:用于保存類名。
● allow_string:如果設(shè)置的值為False,則不允許將字符串類名稱作為對象。
返回值:如果對象屬于給定的類,或者此類作為其父類之一,則is_a()函數(shù)返回True,否則將返回False值。
下面通過代碼示例來了解一下is_a()函數(shù)。
- <?php
- class hello {
- var $store = 'Hello PHP!';
- }
- $PHP= new hello();
- // 檢查$PHP是否是hello類的對象
- if (is_a($PHP, 'hello')) {
- echo "Yes";
- } //Vevb.com
- ?>
輸出:
Yes
PHP instanceof運算符
在PHP中使用instanceof運算符來查明對象是否是類的實例化實例。
基本語法:
$a instanceof MyClass
操作數(shù):instanceof運算符包含以下兩個操作數(shù)
● $a:表示對象。
● MyClass:表示是一個類名。
返回值:如果對象屬于該給定的類,或者將此類作為其父類之一,則返回True,否則返回False值。
下面通過代碼示例來了解一下instanceof運算符。
- <?php
- class hello {
- var $store = 'Hello PHP!';
- }
- $PHP= new hello();
- // 檢查$PHP是否是hello類的對象
- if ($PHP instanceof hello) {
- echo "Yes";
- }
- ?>
輸出:
Yes
is_a()函數(shù)和instanceof運算符之間的區(qū)別
● is_a()是一個函數(shù),而instanceof是一個語言結(jié)構(gòu)。is_a()函數(shù)將顯著變慢,因為它具有執(zhí)行函數(shù)調(diào)用的所有開銷。
● 在函數(shù)回調(diào)的情況下(如array_map),因為instanceof不是函數(shù),它是一種語言構(gòu)造,所以它不能用作回調(diào)。但,回調(diào)可以在is_a()函數(shù)中使用。
● InstanceOf中直接類名的使用時間短于is_a()函數(shù)。
例:
- //語法短(比較)
- $a instanceof MyClass
- is_a( $a, MyClass::class )
● is_a()是一個函數(shù),它將一個對象作為參數(shù)1,將一個字符串作為參數(shù)2,而instanceof將一個對象作為參數(shù)1,并且可以將類名、對象實例或類標(biāo)識符(不帶引號的類名)作為參數(shù)2。
is_a()的示例:
//只有這樣才能調(diào)用它
is_a($object,$string);
instanceof示例:
- //對象實例
- $object instanceof $otherObject;
- //字符串類名
- $object instanceof $string;
- //類的標(biāo)識符
- $object instanceof ClassName;
|
新聞熱點
疑難解答