博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php中instanceof作用
阅读量:5935 次
发布时间:2019-06-19

本文共 1416 字,大约阅读时间需要 4 分钟。

hot3.png

作用:

(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

你可能感兴趣的文章
Python的书写规则
查看>>
深入分析golang多值返回以及闭包的实现
查看>>
简单了解云安全内容
查看>>
Flask学习
查看>>
AngularDart4.0 英雄之旅-教程-08HTTP
查看>>
对于对象的简单验证及返回处理——@JsonView ,@Valid注解的使用
查看>>
Day24 shell环境变量
查看>>
7.1 安装软件包的三种方法 7.2 rpm包介绍 7.3 rpm工具用法 7.4 yum工具用法
查看>>
Spring温故而知新 - bean的装配
查看>>
日常运维(五)
查看>>
ubuntu三行命令安装chrome浏览器
查看>>
WebClient UI和Tomcat的启动器
查看>>
采用LAMP网站架构(Linux+Apache+MySQL+PHP)
查看>>
guava eventbus源码解析
查看>>
Spring Boot 多环境部署
查看>>
目前常用的自然语言处理开源项目/开发包汇总
查看>>
为什么说比特币的交易属性优于储值属性
查看>>
vim介绍与使用 ( 资料 )
查看>>
【2018.06.19学习笔记】【linux高级知识 13.1-13.3】
查看>>
发光的二次元——克拉克拉上云实践
查看>>