详解PHP中instanceof关键字及instanceof关键字有什么作用


Posted in PHP onNovember 05, 2015

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关键字有什么作用的全部内容,希望大家喜欢。

PHP 相关文章推荐
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
php对csv文件的读取,写入,输出下载操作详解
Aug 10 PHP
php实现文件下载代码分享
Aug 19 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
Oct 01 PHP
php中ftp_chdir与ftp_cdup函数用法
Nov 18 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 PHP
php浏览历史记录的方法
Mar 10 PHP
php项目中百度 UEditor 简单安装调试和调用
Jul 15 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
Nov 09 PHP
Laravel框架实现定时发布任务的方法
Aug 16 PHP
php分享朋友圈的实现代码
Feb 18 PHP
php把文件设置为插件的技巧方法
Feb 03 PHP
PHP递归创建多级目录
Nov 05 #PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 #PHP
PHP环境中Memcache的安装和使用
Nov 05 #PHP
php生成gif动画的方法
Nov 05 #PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 #PHP
php无限分类使用concat如何实现
Nov 05 #PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 #PHP
You might like
用PHP读注册表
2006/10/09 PHP
用PHP实现图象锐化代码
2007/06/14 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
PHP中数据类型转换的三种方式
2015/04/02 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
jQuery操作checkbox选择(list/table)
2013/04/07 Javascript
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
jquery checkbox实现单选小例
2013/11/27 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
vue.js指令v-model实现方法
2016/12/05 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
Python更新所有已安装包的操作
2020/02/13 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
pyspark 随机森林的实现
2020/04/24 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
python 实现表情识别
2020/11/21 Python
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
培训自我鉴定
2014/01/31 职场文书
主办会计岗位职责
2014/03/13 职场文书
医学专业大学生求职信
2014/07/12 职场文书
妈妈别哭观后感
2015/06/08 职场文书