php的数据类型约束的好处(PHP中的Iterator迭代对象属性详解)
类别:编程学习 浏览量:1014
时间:2022-03-30 00:17:12 php的数据类型约束的好处
PHP中的Iterator迭代对象属性详解前言
foreach用法和之前的数组遍历是一样的,只不过这里遍历的key是属性名,value是属性值。在类外部遍历时,只能遍历到public属性的,因为其它的都是受保护的,类外部不可见。
|
class harddiskdrive { public $brand ; public $color ; public $cpu ; public $workstate ; protected $memory ; protected $harddisk ; private $price ; public function __construct( $brand , $color , $cpu , $workstate , $memory , $harddisk , $price ) { $this ->brand = $brand ; $this ->color = $color ; $this ->cpu = $cpu ; $this ->workstate = $workstate ; $this ->memory = $memory ; $this ->harddisk = $harddisk ; $this ->price = $price ; } } $harddiskdrive = new harddiskdrive( '希捷' , 'silver' , 'tencent' , 'well' , '1t' , 'hard' , '$456' ); foreach ( $harddiskdrive as $property => $value ) { var_dump( $property , $value ); echo '<br>' ; } |
输出结果为:
string(5) "brand" string(6) "希捷"
string(5) "color" string(6) "silver"
string(3) "cpu" string(7) "tencent"
string(9) "workstate" string(4) "well"
通过输出结果我们也可以看得出来常规遍历是无法访问受保护的属性的。
如果我们想遍历出对象的所有属性,就需要控制foreach的行为,就需要给类对象,提供更多的功能,需要继承自iterator的接口:
该接口,实现了foreach需要的每个操作。foreach的执行流程如下图:
看图例中,foreach中有几个关键步骤:5个。
而iterator迭代器中所要求的实现的5个方法,就是用来帮助foreach,实现在遍历对象时的5个关键步骤:
当foreach去遍历对象时, 如果发现对象实现了ierator接口, 则执行以上5个步骤时, 不是foreach的默认行为, 而是调用对象的对应方法即可:
示例代码:
|
class team implements iterator { //private $name = 'itbsl'; //private $age = 25; //private $hobby = 'fishing'; private $info = [ 'itbsl' , 25, 'fishing' ]; public function rewind () { reset( $this ->info); //重置数组指针 } public function valid() { //如果为null,表示没有元素,返回false //如果不为null,返回true return ! is_null (key( $this ->info)); } public function current() { return current( $this ->info); } public function key() { return key( $this ->info); } public function next() { return next( $this ->info); } } $team = new team(); foreach ( $team as $property => $value ) { var_dump( $property , $value ); echo '<br>' ; } |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。
原文链接:https://www.cnblogs.com/itbsl/p/10690133.html
您可能感兴趣
- 腾讯云换php版本(腾讯云服务器配置php环境的方法)
- php开发pdo事务处理(Cpanel下Cron Jobs定时执行PHP的方法)
- php复选框代码(PHP之多条件混合筛选功能的实现方法)
- php商城支付接口(php实现银联商务公众号+服务窗支付的示例代码)
- php对称算法示例(php解决约瑟夫环算法实例分析)
- php微信公众号管理后台(php实现微信公众号创建自定义菜单功能的实例代码)
- php环境搭建apache(apache 支持 php5 的配置方法)
- phpredis怎么实现任务(PHP swoole和redis异步任务实现方法分析)
- phpstudymysql数据库启动不了(phpstudy mysql启动不了的解决方法)
- php实用工具(php常用的工具开发整理)
- php优势和缺点(PHP的介绍以及优势详细分析)
- php如何对文本框输入小数的小数点(PHP保留两位小数的几种方法)
- phpstudy默认不支持64位php的解决方法(phpstudy默认不支持64位php的解决方法)
- php开发api接口登录(PHP调用接口API封装的例子)
- php脚本控制方法(php swoole多进程/多线程用法示例基于php7nts版)
- 如何用wampserver打开自己写的php(WampServer下安装多个版本的PHP、mysql、apache图文教程)
- 阴阳师孟婆御魂推荐 孟婆御魂搭配毕业套(阴阳师孟婆御魂推荐)
- 袁冰妍终于接到新剧,饰演反追男主,看到合作演员 眼光果然毒辣(袁冰妍终于接到新剧)
- 记忆中的台词(记忆中的台词)
- 袁冰妍轧戏 拍《琉璃》的同时还在拍《将夜》,难怪被骂演技差(拍琉璃的同时还在拍将夜)
- 刚红就耍大牌,《琉璃》角色滤镜碎一地,心疼工作人员(琉璃角色滤镜碎一地)
- 袁冰妍郑业成这对可以处,有脸红情话他们是真的敢说(袁冰妍郑业成这对可以处)
热门推荐
- vuex数据持续化(Vuex数据持久化实现的思路与代码)
- linux搭建nacos(docker搭建nacos1.3.0的实现)
- python爬网验证码在哪里(详解python 爬取12306验证码)
- vue.js开发网站的关键技术(Vue.js项目前端多语言方案的思路与实践)
- 织梦cms模块使用方法(织梦CMS文章模型文章转入新的自定义模型的方法)
- dockerip访问限制(docker win ping 不通容器 避坑指南)
- css3设置动画无限循环(css3 实现文字闪烁效果的三种方式示例代码)
- angular简单介绍(详解Angular依赖注入)
- dedecms循环次数(DedeCMS 统计栏目的文章总数的调用方法)
- dede常用变量(dede调用文章第一张图片非缩略图的实现方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9