如何将PHP遍历对象的方法转换为长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1063个文字,预计阅读时间需要5分钟。
目录+对于PHP来说,foreach是一个非常方便好用的语法,几乎对每一个PHPer来说都是日常接触最多请求之一。那么对象能否通过foreach来遍历呢?+答案是肯定的,但有一个条件,那就是对象必须实现Iterator接口。
目录
对于php来说,foreach是非常方便好用的一个语法,几乎对于每一个PHPer它都是日常接触最多的请求之一。那么对象是否能通过foreach来遍历呢?
答案是肯定的,但是有个条件,那就是对象的遍历只能获得它的公共属性。
// 普通遍历 class A { public $a1 = '1'; public $a2 = '2'; public $a3 = '3'; private $a4 = '4'; protected $a5 = '5'; public $a6 = '6'; public function test() { echo 'test'; } } $a = new A(); foreach ($a as $k => $v) { echo $k, '===', $v, PHP_EOL; } // a1===1 // a2===2 // a3===3 // a6===6
不管是方法还是受保护或者私有的变量,都无法遍历出来。只有公共的属性才能被遍历出来。其实,我们之前在讲设计模式时讲过的迭代器模式就是专门用来进行对象遍历的,而且PHP已经为我们准备好了相关的接口,我们只需要去实现这个接口就可以完成迭代器模式的创建了。
本文共计1063个文字,预计阅读时间需要5分钟。
目录+对于PHP来说,foreach是一个非常方便好用的语法,几乎对每一个PHPer来说都是日常接触最多请求之一。那么对象能否通过foreach来遍历呢?+答案是肯定的,但有一个条件,那就是对象必须实现Iterator接口。
目录
对于php来说,foreach是非常方便好用的一个语法,几乎对于每一个PHPer它都是日常接触最多的请求之一。那么对象是否能通过foreach来遍历呢?
答案是肯定的,但是有个条件,那就是对象的遍历只能获得它的公共属性。
// 普通遍历 class A { public $a1 = '1'; public $a2 = '2'; public $a3 = '3'; private $a4 = '4'; protected $a5 = '5'; public $a6 = '6'; public function test() { echo 'test'; } } $a = new A(); foreach ($a as $k => $v) { echo $k, '===', $v, PHP_EOL; } // a1===1 // a2===2 // a3===3 // a6===6
不管是方法还是受保护或者私有的变量,都无法遍历出来。只有公共的属性才能被遍历出来。其实,我们之前在讲设计模式时讲过的迭代器模式就是专门用来进行对象遍历的,而且PHP已经为我们准备好了相关的接口,我们只需要去实现这个接口就可以完成迭代器模式的创建了。

