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验证码图解(php/JS实现的生成随机密码验证码功能示例)
- php项目开发实例(php项目中类的自动加载实例讲解)
- php建造者模式实例(PHP工厂模式、单例模式与注册树模式实例详解)
- phpstudy使用教程学习(phpStudy 2016 使用教程详解支持PHP7)
- php中把字符串分开的函数(PHP字符串中抽取子串操作实例分析)
- php框架laravel使用(laravel5环境隐藏index.php后缀apache的方法)
- php开发pdo事务处理(Cpanel下Cron Jobs定时执行PHP的方法)
- phpstudy详细教程学习(phpstudy的php版本自由修改的方法)
- phpstudy创建本地服务器(phpstudy linux小皮面板防火墙的开启与关闭)
- php创建多个文件(PHP实现单文件、多个单文件、多文件上传函数的封装示例)
- 如何用thinkphp框架来写一个网站(php tpl模板引擎定义与使用示例)
- php读取远程的txt文件(php 根据URL下载远程图片、压缩包、pdf等文件到本地)
- php静态变量的含义(PHP中define 与 const定义常量的区别详解)
- phpstudy显示403(phpStudy配置多站点多域名方法及遇到的403错误解决方法)
- php常见的数组函数(用php定义一个数组最简单的方法)
- 萌娃唱《白龙马》走红,那生动的小表情,网友直呼 简直是戏精(萌娃唱白龙马走红)
- 朱鹤松被不断认可,凤凰传奇玲花喊话岳云鹏,索要老朱演出门票(朱鹤松被不断认可)
- 元宵晚会槽点多,芒果台上来就假唱,岳云鹏不说相声改评书了(元宵晚会槽点多)
- 岳云鹏跟凤凰传奇谈心,说出了人生中最重要的三个人,这才成功(岳云鹏跟凤凰传奇谈心)
- 爱情可以当饭吃吗(爱情能当饭吃吗)
- Top 3 JSHS《运动与健康科学 英文 》跻身SCI体育学期刊世界前三(Top3JSHS运动与健康科学)
热门推荐
- dedecms编写模板(dedecms模板怎么修改)
- django url配置失效(解决Django生产环境无法加载静态文件问题的解决)
- mysqldump导入导出(MySQL官方导出工具mysqlpump的使用)
- pythontkinter循环显示文本(Python实现定时自动关闭的tkinter窗口方法)
- dedecms伪静态要怎么设置(DedeCMS系统自定义字段图片调用问题的解决方法)
- python opencv替换背景教程(基于OpenCV python3实现证件照换背景的方法)
- truncate和delete(delete、truncate、drop的区别以及该如何选择)
- 将SQL Server数据迁移到MySQL的方法
- lua接口调用崩溃(LuManager新开网站403故障的解决方法)
- 如何布局网站的广告位
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9