php类的Iterator模式
来源:互联网 发布:玩cf网络出现异常 编辑:程序博客网 时间:2024/05/31 19:01
这就要讲到PHP的内置接口Iterator了,PHP5开始支持了接口, 并且内置了Iterator接口, 所以如果你定义了一个类,并实现了Iterator接口,那么你的这个类对象就是ZEND_ITER_OBJECT,否则就是 ZEND_ITER_PLAIN_OBJECT.
对于ZEND_ITER_PLAIN_OBJECT的类,foreach会通过HASH_OF获取该对象的默认属性数组,然后对该数组进行 foreach.
而对于ZEND_ITER_OBJECT的类对象,则会通过调用对象实现的Iterator接口相关函数来进行foreach, 所以, 对于这道笔试题, 可以作出如下的答案:
<?php
class sample implements Iterator
{
private $_items = array(1,2,3,4,5,6,7);
public function __construct() {
;//void
}
public function rewind() { reset($this->_items); }
public function current() { return current($this->_items); }
public function key() { return key($this->_items); }
public function next() { return next($this->_items); }
public function valid() { return ( $this->current() !== false ); }
}
$sa = new sample();
foreach($sa as $key => $val){
print $key . "=>" .$val;
}
?>
- php类的Iterator模式
- Iterator模式的PHP实现
- PHP迭代模式的Iterator和IteratorAggregate
- PHP设计模式之迭代器模式(Iterator)
- PHP - Iterator接口的解释
- PHP - Iterator接口的解释
- Java Iterator的设计模式
- 一个实现了iterator模式的简单模板类
- Php设计模式之【迭代器模式Iterator Pattern】
- 设计模式的迭代器模式 Iterator
- 【设计模式】Iterator设计作业-设计LinkedList的iterator
- Iterator模式
- Iterator模式
- Iterator模式
- Iterator模式
- Iterator模式
- Iterator 模式
- Iterator模式
- java与C++区别
- LAMP架构
- 六度好友算法【转载】
- Java多线程编程--线程状态的转换
- php保存远程图片到本地
- php类的Iterator模式
- 1012
- Javascript中闭包(Closure)
- mysql的连接
- php的多态实现(转)
- PHP程序编写规则
- 每天一个 Linux 命令(31): /etc/group文件详解
- Linux系统下的svn常用命令
- Linux系统下的vi编辑命令