zoukankan      html  css  js  c++  java
  • PHP中instanceof关键字

      instanceof关键字是PHP5新增的新成员。在一些情况下,我们希望确定某个类属于哪种特定的类型、或者是否实现了特定的接口,这时我们就可以使用这个关键字确定一个对象是否是某个特定的类型,是否是从某个特定的类型继承以及它或它的任何祖先类是否实现了特定的接口。

      例如,假设希望了解名为test的对象是否为类Test的实例:

    1 <?php
    2 
    3 class Test{}
    4 $test = new Test();
    5 if ($test instanceof Test) {
    6     echo "Yes";
    7 }else{
    8     echo "No";
    9 

    instanceof关键字在同时处理多个对象是特别有用。例如,你可能要重复地调用某一个函数,希望根据对象类型调整函数的行为。可以使用case语句和instanceof关键字实现这个目标。

     1 <?php
     2 header("Content-type:text/html;charset=utf8");
     3 
     4 class Test{}
     5 class testChilern Extends Test{}
     6 $a = new Test();
     7 $m = new Test();
     8 if($m instanceof Test)
     9   echo '$m是类Test的实例!<br />'; 
    10 switch ($a instanceof Test){
    11   case true :
    12     echo 'YES <br />';
    13     break;
    14   case false :
    15     echo 'No <br />'; 
    16     break;
    17 }
    18 $d = new testChilern();
    19 if($d instanceof Test)
    20     echo '$d是类Test的子类!<br />';

    我们还可以使用instanceof关键字判断一个对象是否实现了某一个接口

     1 <?php
     2 header("Content-type:text/html;charset=utf8");
     3
     4 interface ExampleInterface
     5 {
     6    public function interfaceMethod();
     7 }
     8 class ExampleClass implements ExampleInterface
     9 {
    10    public function interfaceMethod()
    11    {
    12      return 'Hello World!';
    13    }
    14 }
    15 $exampleInstance = new ExampleClass();
    16 if($exampleInstance instanceof ExampleInterface){
    17     echo 'Yes, it is';  
    18 }else{
    19     echo 'No, it is not';
    20 } 

    另外,需注意 instanceof 与 is_subclass_of() 的区别,请看代码:

     1 <?php
     2 header("Content-type:text/html;charset=utf8");
     3 
     4 class Foo {
     5    public $foobar = 'Foo';
     6    public function test() {
     7      echo $this->foobar . "
    ";
     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
    ";
    16 $a->test();
    17 $b->test();
    18 echo "instanceof Foo
    ";
    19 var_dump($a instanceof Foo); // TRUE
    20 var_dump($b instanceof Foo); // TRUE
    21 echo "instanceof Bar
    ";
    22 var_dump($a instanceof Bar); // FALSE
    23 var_dump($b instanceof Bar); // TRUE
    24 echo "subclass of Foo
    ";
    25 var_dump(is_subclass_of($a, 'Foo')); // FALSE
    26 var_dump(is_subclass_of($b, 'Foo')); // TRUE
    27 echo "subclass of Bar
    ";
    28 var_dump(is_subclass_of($a, 'Bar')); // FALSE
    29 var_dump(is_subclass_of($b, 'Bar')); // FALSE
    View Code

    is_subclass_of 的作用就是判断一个对象是否是该类的子类,是则返回 TRUE。

  • 相关阅读:
    Codeforces 777B Game of Credit Cards
    Codeforces 777A Shell Game
    零基础学贪心算法
    1283 最小周长
    容斥原理
    Humble Numbers(丑数) 超详解!
    1284 2 3 5 7的倍数
    1305 Pairwise Sum and Divide
    1347 旋转字符串
    HDU 2549 壮志难酬
  • 原文地址:https://www.cnblogs.com/heyijing/p/5088582.html
Copyright © 2011-2022 走看看