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)

 

转载于:https://my.oschina.net/botkenni/blog/873953

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值