搜索
首页php教程php手册PHP设计模式漫谈之迭代器模式(5)

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

Jun 13, 2016 am 10:42 AM
php可以对象我们抽象模式注意设计模式迭代

注意,迭代器是比对象集更好的抽象,因为我们可以让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

 

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)