迭代器(iterator)模式,在乙個很常見的過程上提供了乙個抽象:位於物件圖不明部分的一組物件(或標量)集合上的迭代。
迭代有幾種不同的具體執行方法:在陣列屬性,集合物件,陣列,甚至乙個查詢結果集之上迭代。
在php官方手冊中可以找到完整的spl迭代器列表。得益於對php的強力支援,使用迭代器模式的大部分工作都包括在標準實現中,下面的**示例就利用了標準iterator的功能。
<?php
//定義乙個類,實現了iterator的方法
class testiterator implements iterator
//返回到迭代器的第乙個元素
public function rewind()
//檢查當前位置是否有效
public function valid()
//返回當前元素
public function current()
//返回當前元素的鍵
public function key()
//向前移動到下乙個元素
public function next()
}//定義陣列,生成類時使用
$testiterator = new testiterator($arrstring);
//開始迭代物件
foreach ( $testiterator as $key => $val )
執行可以看到如下結果:
0=>jane
2=>orange
3=>pear
如果有興趣,可以在每乙個函式裡面開始處加上「var_dump
(__method__
);」,這樣就可以看到每個函式的呼叫順序了,如下:
string(25) "testiterator::__construct"
string(20) "testiterator::rewind"
string(19) "testiterator::valid"
string(21) "testiterator::current"
string(17) "testiterator::key"
0=>jane
string(18) "testiterator::next"
string(19) "testiterator::valid"
string(21) "testiterator::current"
string(17) "testiterator::key"
string(18) "testiterator::next"
string(19) "testiterator::valid"
string(21) "testiterator::current"
string(17) "testiterator::key"
2=>orange
string(18) "testiterator::next"
string(19) "testiterator::valid"
string(21) "testiterator::current"
string(17) "testiterator::key"
3=>pear
string(18) "testiterator::next"
string(19) "testiterator::valid"
PHP設計模式 迭代器模式
web開發筆記 www.chhua.com 每日練習 php設計模式 迭代器模式 呵呵,迭代器模式是php開發中非常有用的乙個設計模式,其主要的應用範圍如下 一 使用返回迭代器的包或庫時 如php5中的spl迭代器 二 無法在一次的呼叫獲取容器的所有元素時 三 要處理數量巨大的無素時 資料庫中的表以...
php設計模式(迭代器模式)
1.迭代器模式,在不需要了解內部實現的前提下,遍歷乙個聚合物件的內部元素 2.相比於傳統的程式設計模式,迭代器模式可以隱藏遍歷元素的所需的操作 迭代器需要實現系統內建的介面,並且實現介面的五個方法 class alluser implements iterator 獲取下乙個元素 public fu...
PHP 設計模式之迭代器模式
在不需要了解內部實現的前提條件下,可以遍歷乙個聚合物件的內部元素 相比於傳統的程式設計模式,迭代器模式可以隱藏遍歷元素所需的操作 class alluser implements iterator public function current public function next 第乙個呼叫 ...