ホームページ  >  記事  >  バックエンド開発  >  PHPのinstanceofキーワードとは何ですか?それの使い方?

PHPのinstanceofキーワードとは何ですか?それの使い方?

伊谢尔伦
伊谢尔伦オリジナル
2017-06-21 16:36:401923ブラウズ

instanceof キーワードとは何ですか?

instdnceof キーワードは PHP5 で新たに追加されました。このキーワードを使用して、 オブジェクト がクラスのインスタンスであるか、クラスのサブクラスであるか、または特定のインターフェイスを実装しているかを判断し、対応する操作を実行します。場合によっては、クラスが特定の型であるか、または特定のインターフェイスを実装しているかを判断する必要があります。このタスクには、instanceofoperatorが最適です。 instanceof 演算子は、インスタンスが特定の型であるかどうか、インスタンスが特定の型を継承しているかどうか、インスタンスまたはその祖先クラスが特定のインターフェイスを実装しているかどうかという 3 つのことをチェックします。たとえば、manager という名前のオブジェクトが Employee クラスのインスタンスであるかどうかを知りたいとします。

$manager = new Employee();
…
if ($manager instanceof Employee)
  echo "Yes";

注意すべき点が 2 つあります。まず、クラス名には区切り文字 (引用符) がありません。区切り文字を使用すると、構文エラーが発生します。次に、比較が失敗した場合、スクリプトは実行を終了します。 instanceof キーワードは、複数のオブジェクトを同時に操作する場合に特に便利です。たとえば、関数を繰り返し呼び出しても、オブジェクトの種類に基づいて関数の動作を調整したい場合があります。この目標を達成するには、case ステートメントと instanceof キーワードを使用します。

class test{}
class test{}
class testChilern Extends test{}
$a = new test();
$m = new test();
$i = ($m instanceof test);
if($i)
  echo &#39;$m是类test的实例!<br />&#39;; // get this value
switch ($a instanceof test){
  case true :
    echo &#39;YES<br />&#39;;
    break;
  case false :
    echo &#39;No<br />&#39;; //get this value
    break;
}
$d=new testChilern();
if($d instanceof test)echo &#39;$d是类test的子类!<br />&#39;; // get this value

php

のinstanceofの機能は何ですか? 機能: (1) オブジェクトが特定のクラスのインスタンスであるかどうかを判断します。 (2) オブジェクトが特定のインターフェイスを実装しているかどうかを判断します。

1回目の使用法:

<?php
$obj = new A();
if ($obj instanceof A) {
  echo &#39;A&#39;;
}

2回目の使用法:

<?php
interface ExampleInterface
{
   public function interfaceMethod();
 }
 class ExampleClass implements ExampleInterface
{
   public function interfaceMethod()
   {
     return &#39;Hello World!&#39;;
   }
 }
$exampleInstance = new ExampleClass();
 if($exampleInstance instanceof ExampleInterface){
   echo &#39;Yes, it is&#39;;
 }else{
   echo &#39;No, it is not&#39;;
} 
?>

出力結果: はい、そうです

さらに、instanceofとis_subclass_of()の違いに注意してください。コードを参照してください:

<?php
class Foo {
   public $foobar = &#39;Foo&#39;;
   public function test() {
     echo $this->foobar . "\n";
   }
 }
 class Bar extends Foo {
   public $foobar = &#39;Bar&#39;;
 }
$a = new Foo();
$b = new Bar();
echo "use of test() method\n";
$a->test();
$b->test();
echo "instanceof Foo\n";
var_dump($a instanceof Foo); // TRUE
var_dump($b instanceof Foo); // TRUE
echo "instanceof Bar\n";
var_dump($a instanceof Bar); // FALSE
var_dump($b instanceof Bar); // TRUE
echo "subclass of Foo\n";
var_dump(is_subclass_of($a, &#39;Foo&#39;)); // FALSE
var_dump(is_subclass_of($b, &#39;Foo&#39;)); // TRUE
echo "subclass of Bar\n";
var_dump(is_subclass_of($a, &#39;Bar&#39;)); // FALSE
var_dump(is_subclass_of($b, &#39;Bar&#39;)); // FALSE
?>

出力結果 (PHP 5.4.4):

 use of test() method
 Foo
 Bar
 instanceof Foo
 bool(true)
 bool(true)
 instanceof Bar
 bool(false)
 bool(true)
 subclass of Foo
 bool(false)
 bool(true)
 subclass of Bar
 bool(false)

以上がPHPのinstanceofキーワードとは何ですか?それの使い方?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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