详解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 相关文章推荐
一个用php3编写的简单计数器
Oct 09 PHP
php自动给文章加关键词链接的函数代码
Nov 29 PHP
php实现自动获取生成文章主题关键词功能的深入分析
Jun 03 PHP
php使用多个进程同时控制文件读写示例
Feb 28 PHP
php类声明和php类使用方法示例分享
Mar 29 PHP
Yii入门教程之目录结构、入口文件及路由设置
Nov 25 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
Sep 22 PHP
PHP并发查询MySQL的实例代码
Aug 09 PHP
PHP封装的完整分页类示例
Aug 21 PHP
CI框架网页缓存简单用法分析
Dec 26 PHP
PHP如何通过表单直接提交大文件详解
Jan 08 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
Apr 05 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
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
PHP 加密与解密的斗争
2009/04/17 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
2011/05/19 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
JavaScript &amp; jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
深入了解Vue3模板编译原理
2020/11/19 Vue.js
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python简单程序读取串口信息的方法
2015/03/13 Python
Python中文件操作简明介绍
2015/04/13 Python
Python输出带颜色的字符串实例
2017/10/10 Python
使用requests库制作Python爬虫
2018/03/25 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
python实现石头剪刀布小游戏
2021/01/20 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
Python实现图片添加文字
2019/11/26 Python
浅谈tensorflow模型保存为pb的各种姿势
2020/05/25 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
python 贪心算法的实现
2020/09/18 Python
详解CSS3选择器:nth-child和:nth-of-type之间的差异
2017/09/18 HTML / CSS
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
linux面试题参考答案(1)
2016/01/22 面试题
大学生新闻专业个人自我评价
2013/11/12 职场文书
商场经理竞聘演讲稿
2014/01/01 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
九不准学习心得体会
2016/01/23 职场文书