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
您可能感兴趣
- phpweb应用技术开发与数据库教程(IIS8 使用FastCGI配置PHP环境图文教程)
- php新建文件夹代码(php新建文件的方法实例)
- phpob函数使用方法(php中isset与empty函数的困惑与用法分析)
- 宝塔linux面板php7.0安装不上(宝塔面板php.ini文件在哪里找)
- php如何将数组清空(PHP实现数组向任意位置插入,删除,替换数据操作示例)
- php 实例代码解析(PHP反射学习入门示例)
- php怎么设置统计代码(php简单计算权重的方法示例适合抽奖类应用)
- thinkphp标签详解(thinkphp整合系列之极验滑动验证码geetest功能)
- php怎么实现多线程(PHP实现的多进程控制demo示例)
- thinkphp5对接支付宝扫码支付(ThinkPHP框架下整合支付宝支付功能图文教程)
- php框架laravel使用(laravel5环境隐藏index.php后缀apache的方法)
- php符串使用教程学习(PHP实现支持CURL字符串证书传输的方法)
- php验证码初始化教程交流(PHP token验证生成原理实例分析)
- php开发中用什么模板(PHP模版引擎原理、定义与用法实例)
- php如何实现异步调用(php基于协程实现异步的方法分析)
- php队列的用法实例(PHP实现一个限制实例化次数的类示例)
- 苹果自研芯片跑分对比 A16芯片排名靠后,M1系列霸榜(苹果自研芯片跑分对比)
- X86处理器的梦魇 苹果M1自研芯片到底有多强(苹果M1自研芯片到底有多强)
- 泰剧《爱欲之神》Boom kitkong和Great合体杂志(泰剧爱欲之神Boomkitkong和Great合体杂志)
- 素人恋爱综艺火药味十足 男生为赢得芳心集体扯头花,真是出好戏(素人恋爱综艺火药味十足)
- 《囧妈》为何受抵制 春节七部影片撤档背后的责任与博弈(囧妈为何受抵制)
- 提醒 2019年起河南驾考要开设科目五 官方回应来了(2019年起河南驾考要开设科目五)
热门推荐
- 块级元素水平垂直居中
- 结构、枚举和数组的区别
- mysql程序中判断select返回空值(解决MySQL读写分离导致insert后select不到数据的问题)
- python批量自动化访问网站(python 自动批量打开网页的示例)
- thinkphp表单提交不到数据(ThinkPHP5.1表单令牌Token失效问题的解决)
- vite2源码解析(Vite创建项目的实现步骤)
- react循环有几种方法(React forwardRef的使用方法及注意点)
- dedecms中的有些功能如何修改(dedecms 每个栏目下的文章总数的调用)
- 阿里云服务器搭建linux学习环境(Mac 下阿里云服务器的配置方法)
- thinkphp控制器怎么设置自定义(Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9