详解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的ob_start() 控制您的浏览器cache
Aug 03 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 PHP
php将时间差转换为字符串提示
Sep 07 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 PHP
非常好用的Zend Framework分页类
Jun 25 PHP
php函数与传递参数实例分析
Nov 15 PHP
在SAE上搭建最新wordpress的方法
Dec 21 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 PHP
PHP 7.0新增加的特性介绍
Jun 08 PHP
深入浅析PHP的session反序列化漏洞问题
Jun 15 PHP
PHP文件操作实例总结【文件上传、下载、分页】
Dec 08 PHP
Laravel+Intervention实现上传图片功能示例
Jul 09 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自定义session示例分享
2014/04/22 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
php操作MongoDB类实例
2015/06/17 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
python进行参数传递的方法
2020/05/12 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
台湾旅游网站:雄狮旅游网
2017/08/16 全球购物
历史学专业推荐信
2013/11/06 职场文书
初三班主任寄语大全
2014/04/04 职场文书
电钳工人个人求职信
2014/05/10 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
Python中npy和mat文件的保存与读取
2022/04/24 Python