PHP5的另一个新组员是instdnceof关键字。应用这一关键字能够明确一个对象是类的实例、类的子类,還是完成了某一特殊插口,并开展相对的实际操作。在一些状况下,大家期待明确某一类是不是特殊的类型,或是是不是完成了特殊的插口。instanceof操作符特别适合进行这一每日任务。instanceof操作符查验三件事儿:实例是不是某一特殊的类型,实例是不是从某一特殊的类型承继,实例或是他的一切先祖类是不是完成了特殊的插口。比如,假定期待掌握名叫manager的对象是不是为类Employee的实例:

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

有二点特别注意。最先,类名沒有一切定界符(冒号)。应用定界符将造成拼写错误。次之,假如较为不成功,脚本制作将撤出实行。instanceof关键字在另外解决好几个对象时尤其有效。比如,你很有可能要反复地启用某一涵数,但期待依据对象类型调节涵数的个人行为。能够应用case句子和instanceof关键字来完成这一总体目标。

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

php中 instanceof有什么作用

功效:(1)分辨一个对象是不是某一类的实例,(2)分辨一个对象是不是完成了某一插口。

第一种使用方法

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

第二种使用方法:

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

輸出結果:Yes, it is

此外,特别注意 instanceof 与 is_subclass_of() 的差别,可以看编码:

<?php
class Foo {
   public $foobar = 'Foo';
   public function test() {
     echo $this->foobar . "\n";
   }
 }
 class Bar extends Foo {
   public $foobar = 'Bar';
 }
$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, 'Foo')); // FALSE
var_dump(is_subclass_of($b, 'Foo')); // TRUE
echo "subclass of Bar\n";
var_dump(is_subclass_of($a, 'Bar')); // FALSE
var_dump(is_subclass_of($b, 'Bar')); // 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关键字及instanceof关键字有什么作用的所有内容,期待大伙儿喜爱。