首頁 >後端開發 >php教程 >詳解php類別的Iterator模式的範例程式碼

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

黄舟
黄舟原創
2017-03-24 10:12:411170瀏覽

這就要講到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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn