用于确定一个PHP变量是否属于某一类class的实例:

Example1对类使用instanceof

1
2
3
4
5
6
7
<?php
class MyClass{}
class NotMyClass{}
$a = new MyClass();
var_dump($a instanceof MyClass); // true
var_dump($a instanceof NotMyClass); // false

也可以用来确定一个变量是不是继承于某一父类的子类的实例:

Example2对继承使用instanceof

1
2
3
4
5
6
7
<?php
class ParentClass{}
class MyClass extends ParentClass{}
$a = new MyClass();
var_dump($a instanceof MyClass); //true
var_dump($a instanceof ParentClass); //true

检查一个对象是否不是某个类的实例

Example3使用instanceof检查对象不是某个类的实例:

1
2
3
4
<?php
class MyClass{}
$a = new MyClass();
var_dump(!($a instanceof stdClass));//true

也可用于确定一个变量是不是实现了某个接口的对象的实例:

Example4对接口使用instanceof

1
2
3
4
5
6
<?php
interface MyInterface{}
class MyClass implements MyInterface{}
$a = new MyClass();
var_dump($a instanceof MyClass);//true
var_dump($a instanceof MyInterface); //true

虽然 instanceof 通常直接与类名一起使用,但也可以使用对象或字符串变量:

Example5 对其它变量使用instanceof

1
2
3
4
5
6
7
8
9
10
11
12
<?php
interface MyInterface{}
class MyClass implements MyInterface{}
$a = new MyClass();
$b = new MyClass();
$c = "MyClass";
$d = "NotMyClass";
var_dump($a instanceof $b); //true
var_dump($a instanceof $c); //true
var_dump($a instanceof $d); //false