• 技术文章 >后端开发 >php教程

    详解php类的Iterator模式的示例代码

    黄舟黄舟2017-03-24 10:12:41原创564
    这就要讲到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模式的示例代码的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php,Iterator
    上一篇:PHP7和HHVM的性能详细介绍(图文) 下一篇:PHP之流程的控制代码详解(图文)
    千万级数据并发解决方案

    相关文章推荐

    • 用PHP实现自己的sha-256哈希算法!• PHP开发惯用函数和必须会的函数总结 -带例子• 【译】更快的模式实现PHP数组去重• Nginx+CI出现404异常• file_get_contents函数可否不报错
    1/1

    PHP中文网