詳解php類別的Iterator模式的範例程式碼

黄舟
發布: 2023-03-06 21:30:01
原創
1091 人瀏覽過

這就要講到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
{
private $_items = array(1,2,3,4,5,6,7);

public function __construct() {
     ;//void
}
public function rewind() { reset($this->_items); }
public function current() { return current($this->_items); }
public function key() { return key($this->_items); }
public function next() { return next($this->_items); }
public function valid() { return ( $this->current() !== false ); }
}

$sa = new sample();
foreach($sa as $key => $val){
print $key . "=>" .$val;
}
?>
登入後複製

以上是詳解php類別的Iterator模式的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!