instanceof

是php5为面向对象引入的php中唯一的类型运算符。

instanceof用来检测一个给定的对象是否属于(继承于)某个类(class)、某个类的子类、某个接口(interface)。如果是则返回true。
 
看下面的一段代码:

<?php
class baseClass {}
class subClass extends baseClass{}

interface aInterface {}
class aClass implements aInterface {}

$a = new baseClass();
echo( ($a instanceof baseClass));
$b = new subClass();
echo( ($b instanceof baseClass));
$c = new aClass();
echo( ($c instanceof aInterface));
?>

虽然PHP5是松散型的程序语言,但PHP5仍新增了Class Type Hints的功能,用来声明传入对象的参数所需要符合类型。如果传入的参数不符合指定的类型会产fatal error。看下面的代码。

<?php
class Foo {}
class Bar {}

function check(Foo $obj) {
       echo("The passed in object is Foo/its subclass/its implementation(if Foo is interface).<br>");
}

$a = new Foo();
$b = new Bar();
check($a);
check($b);
?>

其实使用Class Type Hints就和以下程序代码的意义一样:

<?php
function check($obj) {
if (!($obj instanceof aClassName)) {
       die("Argument 1 must be an instance of aClassName");
}
}
?>