PHP設計模式(6)迭代器模式

2021-09-03 09:29:26 字數 1720 閱讀 9909

迭代器(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 第乙個呼叫 ...