PHP检测接口Traversable用法详解


Posted in PHP onDecember 29, 2017

本文实例讲述了PHP检测接口Traversable用法。分享给大家供大家参考,具体如下:

Traversable用于检测一个类是否可以使用 foreach 进行遍历,这是一个无法在 PHP 脚本中实现的内部引擎接口,实际编程中我们使用Iterator接口或者IteratorAggregate接口来实现遍历。

接口摘要:

Traversable {
}

Traversable 重要的一个用处就是判断一个类是否可以遍历,下面是官方例子:

<?php
  if( !is_array( $items ) && !$items instanceof Traversable )
    //Throw exception here
?>

需要注意的是,数组和对象可以通过foreach遍历,但它们没有实现Traversable接口,所以不是Traversable的示例:

<?php
$array=[1,2,3];
$obj = (object) $array;
var_dump($array instanceof \Traversable);
var_dump($obj instanceof \Traversable);
?>

以上代码输出:

boolean false
boolean false

补充说明:

类未实现Iterator接口或者IteratorAggregate接口时,执行foreach遍历将输出所有其能够访问的可见属性

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 PHP
PHP 循环删除无限分类子节点的实现代码
Jun 21 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
Mar 05 PHP
从wamp到xampp的升级之路
Apr 08 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
Jun 03 PHP
php生成静态html页面的方法(2种方法)
Sep 14 PHP
简单谈谈php延迟静态绑定
Jan 26 PHP
深入解析PHP的Yii框架中的event事件机制
Mar 17 PHP
浅谈PHP值mysql操作类
Jun 29 PHP
使用PHP访问RabbitMQ消息队列的方法示例
Jun 06 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
Aug 13 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 #PHP
PHP迭代器接口Iterator用法分析
Dec 28 #PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 #PHP
PHP获取数组中指定的一列实例
Dec 27 #PHP
快速解决PHP调用Word组件DCOM权限的问题
Dec 27 #PHP
详解Yaf框架PHPUnit集成测试方法
Dec 27 #PHP
Laravel中使用Queue的最基本操作教程
Dec 27 #PHP
You might like
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
JavaScript将一个数组插入到另一个数组的方法
2015/03/19 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python学习手册中的python多态示例代码
2014/01/21 Python
Python中动态创建类实例的方法
2017/03/24 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
django框架使用方法详解
2019/07/18 Python
python调用支付宝支付接口流程
2019/08/15 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
python对文件的操作方法汇总
2020/02/28 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
几道Java和数据库的面试题
2013/05/30 面试题
乡镇干部十八大感言
2014/02/17 职场文书
电焊工岗位职责
2014/03/06 职场文书
学术会议通知
2015/04/15 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python