ホームページ >バックエンド開発 >PHPチュートリアル >PHPのis_a()関数とinstanceofの違いは何ですか?

PHPのis_a()関数とinstanceofの違いは何ですか?

青灯夜游
青灯夜游オリジナル
2019-03-06 10:06:523432ブラウズ

PHP の is_a() 関数と instanceof 演算子の機能は似ていますが、両者の違いは何ですか?次の記事では、is_a()関数とinstanceofについて簡単に理解するとともに、is_a()関数とinstanceofの違いについて紹介しますので、ご参考になれば幸いです。 [ビデオチュートリアルの推奨: PHP チュートリアル]

##PHP is_a() 関数 # #is_a() 関数は、指定されたオブジェクトが指定されたクラスに属しているかどうかを確認する PHP の組み込み関数であり、指定されたクラスが指定されたオブジェクトの親クラスの 1 つであるかどうかも確認します。

基本構文:

is_a( $object, $class_name, $allow_string )

パラメータ: is_a() 関数は次の 3 つのパラメータを受け入れることができます

●オブジェクト: 使用しますテストオブジェクトを保存します。 ●Class_name: クラス名を保存するために使用されます。

●Allow_string: 設定値が False の場合、文字列クラス名をオブジェクトとして使用することはできません。

戻り値:

オブジェクトが指定されたクラスに属している場合、またはこのクラスがその親クラスの 1 つである場合、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 インスタンスオブ演算子

PHP でインスタンスオブ演算子を使用して、オブジェクトがインスタンス化されたクラスのインスタンス。

基本構文:

$a instanceof MyClass

オペランド: instanceof 演算子には次の 2 つのオペランドが含まれます

● $a: を表します。物体。 ● MyClass:クラス名を示します。

戻り値: オブジェクトが指定されたクラスに属している場合、またはこのクラスがその親クラスの 1 つである場合は 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() はfunction、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 example:

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

上記がこの記事の全内容です, 皆様の勉強のお役に立てれば幸いです。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !

以上がPHPのis_a()関数とinstanceofの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。