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

    PHP设计模式漫谈之迭代器模式(5)_PHP教程

    2016-07-13 17:44:13原创332
    注意,迭代器是比对象集更好的抽象,因为我们可以让InfiniteIterators,NoRewindIterators等,不用与普通数组阵列与一致,因此,Iterator缺少count()函数等功能。
    在PHP官方手册中可以找到完整的SPL迭代器列表。得益于对PHP的强力支持,使用迭代器模式的大部分工作都包括在标准实现中,下面的代码示例就利用了标准Iterator和RecursiveIterators的功能。

    ___FCKpd___0___FCKpd___1

    // lets play with RecursiveIterator implementations $it = new RecursiveArrayIterator(array( A, B, array( C, D ), array( array( E, F ), array( G, H, I ) ) )); // $it is a RecursiveIterator but also an Iterator, // so it loops normally over the four elements // of the array. echo "Foreach over a RecursiveIterator: "; foreach ($it as $value) { echo $value; // but RecursiveIterators specify additional // methods to explore children nodes $children = $it->hasChildren() ? {Yes} : {No}; echo $children, ; } echo " "; // we can bridge it to a different contract via // a RecursiveIteratorIterator, whose cryptic name // should be read as an Iterator that spans over // a RecursiveIterator. echo "Foreach over a RecursiveIteratorIterator: "; foreach (new RecursiveIteratorIterator($it) as $value) { echo $value; } echo " "; 原文名:Practical Php Patterns: Iterator 作者:Giorgio

    content;
    private $_index = 0;

    public function __construct(array $content)
    {
    $this->_content = $content;
    }

    public function rewind()
    {
    $this->_index = 0;
    }

    public function valid()
    {
    return isset($this->_content[$this->_index]);
    }

    public function current()
    {
    return $this->_content[$this->_index];
    }

    public function key()
    {
    return $this->_index;
    }

    public function next()
    {
    $this->_index++;
    }
    }

    $arrayarray = array(A, B, C, D);
    echo "Collection: ";
    foreach (new Collection($array) as $key => $value) {
    echo "$key => $value. ";
    }
    echo " ";
    ___FCKpd___1___FCKpd___2原文名:Practical Php Patterns: Iterator 作者:Giorgio

    content;

    public function __construct(array $content)
    {
    $this->_content = $content;
    }

    public function contains($number)
    {
    return in_array($number, $this->_content);
    }

    /**
    * Only this method is necessary to implement IteratorAggregate.
    * @return Iterator
    */
    public function getIterator()
    {
    return new ArrayIterator($this->_content);
    }
    }

    echo "NumbersSet: ";
    foreach (new NumbersSet($array) as $key => $value) {
    echo "$key => $value. ";
    }
    echo " ";
    ___FCKpd___2原文名:Practical Php Patterns: Iterator 作者:Giorgio

    content;
    private $_index = 0;

    public function __construct(array $content)
    {
    $this->_content = $content;
    }

    public function rewind()
    {
    $this->_index = 0;
    }

    public function valid()
    {
    return isset($this->_content[$this->_index]);
    }

    public function current()
    {
    return $this->_content[$this->_index];
    }

    public function key()
    {
    return $this->_index;
    }

    public function next()
    {
    $this->_index++;
    }
    }

    $arrayarray = array(A, B, C, D);
    echo "Collection: ";
    foreach (new Collection($array) as $key => $value) {
    echo "$key => $value. ";
    }
    echo " ";
    ___FCKpd___1___FCKpd___2

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/478773.htmlTechArticle注意,迭代器是比对象集更好的抽象,因为我们可以让InfiniteIterators,NoRewindIterators等,不用与普通数组阵列与一致,因此,Iterator缺少cou...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP 设计模式 漫谈 迭代 模式 注意 迭代 对象 集更 好的 抽象 因为 我们 可以 Inf
    上一篇:php正则表达式应用之提炼歌词_PHP教程 下一篇:php shuffle()对数组随机排序代码_PHP教程
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• php7.2怎么连接oracle数据库?OCI8扩展的安装• php中unserialize返回false的解决方法,unserializefalse_PHP教程• PHP怎么样读取COOKIES_PHP教程• PHP 获得文件夹大小 计算文件_PHP教程• 使用PHP和AJAX的XML编程_PHP教程
    1/1

    PHP中文网