PHP - 型演算子

型演算子

instanceof を使用して、ある変数が特定のクラスのオブジェクトのインスタンスであるかどうかを調べます。

<?php
  class MyClass{ }
  class NotMyClass{ }
  
  $a = new MyClass;

  var_dump($a instanceof MyClass);    // bool(true)
  var_dump($a instanceof NotMyClass); // bool(false)
?>
クラスでの instanceof の使用法

instanceof は、ある変数が特定の親クラスを継承したクラスのオブジェクトのインスタンスであるかどうかを調べることもできます。

<?php
  class ParentClass{ }
  class MyClass extends ParentClass{ }

  $a = new MyClass;

  var_dump($a instanceof MyClass);     // bool(true)
  var_dump($a instanceof ParentClass); // bool(true)
?>
継承したクラスでの instanceof の使用法

あるオブジェクトが特定のクラスのインスタンスでないことを調べるには、論理否定演算子を使用します。

<?php
  class MyClass{ }

  $a = new MyClass;
  
  var_dump(!($a instanceof stdClass)); // bool(true)
?>
instanceof を使用して、オブジェクトがクラスのインスタンスでないかどうかを調べる方法

instanceof は、ある変数が特定のインターフェイスを実装したクラスのオブジェクトのインスタンスであるかどうかも調べることができます。

<?php
  interface MyInterface{ }
  class MyClass implements MyInterface{ }

  $a = new MyClass;

  var_dump($a instanceof MyClass);     // bool(true)
  var_dump($a instanceof MyInterface); // bool(true)
?>
インターフェイスでの instanceof の使用法

通常、instanceof ではリテラルのクラス名を使用しますが、別のオブジェクトや文字列変数を使用することもできます。

<?php
  interface MyInterface{ }
  class MyClass implements MyInterface{ }

  $a = new MyClass;
  $b = new MyClass;
  $c = 'MyClass';
  $d = 'NotMyClass';

  var_dump($a instanceof $b); // bool(true)
  var_dump($a instanceof $c); // bool(true)
  var_dump($a instanceof $d); // bool(false)
?>
変数を用いた instanceof の使用法

関連記事