instanceof关键字是PHP5新增的新成员。在一些情况下,我们希望确定某个类属于哪种特定的类型、或者是否实现了特定的接口,这时我们就可以使用这个关键字确定一个对象是否是某个特定的类型,是否是从某个特定的类型继承以及它或它的任何祖先类是否实现了特定的接口。
例如,假设希望了解名为test的对象是否为类Test的实例:
1
instanceof关键字在同时处理多个对象是特别有用。例如,你可能要重复地调用某一个函数,希望根据对象类型调整函数的行为。可以使用case语句和instanceof关键字实现这个目标。
1 '; 10 switch ($a instanceof Test){11 case true :12 echo 'YES ';13 break;14 case false :15 echo 'No '; 16 break;17 }18 $d = new testChilern();19 if($d instanceof Test)20 echo '$d是类Test的子类!';
我们还可以使用instanceof关键字判断一个对象是否实现了某一个接口
1
另外,需注意 instanceof 与 is_subclass_of() 的区别,请看代码:
1 foobar . "\n"; 8 } 9 }10 class Bar extends Foo {11 public $foobar = 'Bar';12 }13 $a = new Foo();14 $b = new Bar();15 echo "use of test() method\n";16 $a->test();17 $b->test();18 echo "instanceof Foo\n";19 var_dump($a instanceof Foo); // TRUE20 var_dump($b instanceof Foo); // TRUE21 echo "instanceof Bar\n";22 var_dump($a instanceof Bar); // FALSE23 var_dump($b instanceof Bar); // TRUE24 echo "subclass of Foo\n";25 var_dump(is_subclass_of($a, 'Foo')); // FALSE26 var_dump(is_subclass_of($b, 'Foo')); // TRUE27 echo "subclass of Bar\n";28 var_dump(is_subclass_of($a, 'Bar')); // FALSE29 var_dump(is_subclass_of($b, 'Bar')); // FALSE
is_subclass_of 的作用就是判断一个对象是否是该类的子类,是则返回 TRUE。