php類的Iterator模式

2021-07-28 18:59:32 字數 604 閱讀 2108

這就要講到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

public function rewind()

public function current()

public function key()

public function next()

public function valid()

}$sa = new sample();

foreach($sa as $key => $val)

?>

設計模式 Iterator模式

迭代器模式,主要用於容器裡面元素的遍歷,其他地方用到的不多,這裡舉個例項,模仿jdk裡面迭代器的實現,當然我這裡並沒有把iterator方法抽象到iterable這個介面中,依據介面的設計原則,不要做乙個面面俱到的介面,而應該讓特定的介面完成特定的功能 以下是 示例,使用了之後,我們在測試 中,僅僅...

Java迭代模式(Iterator模式)

上了這麼多年學,我發現乙個問題,好象老師都很喜歡點名,甚至點名都成了某些老師的嗜好,一日不點名,就飯吃不香,覺睡不好似的,我就覺得很奇怪,你的課要是講的好,同學又怎麼會不來聽課呢,殊不知 誤人子弟,乃是犯罪!啊。好了,那麼我們現在來看老師這個點名過程是如何實現吧 1 老規矩,我們先定義老師 teac...

Java迭代模式(Iterator模式)

上了這麼多年學,我發現乙個問題,好象老師都很喜歡點名,甚至點名都成了某些老師的嗜好,一日不點名,就飯吃不香,覺睡不好似的,我就覺得很奇怪,你的課要是講的好,同學又怎麼會不來聽課呢,殊不知 誤人子弟,乃是犯罪!啊。好了,那麼我們現在來看老師這個點名過程是如何實現吧 1 老規矩,我們先定義老師 teac...