迭代器设计模式是什么?

PHP 基础面试题
0
0
分享
推荐答案
展示答案

<?php //迭代器设计模式可帮助构造特定对象,那些对象能够提供单一标准接口循环或迭代任何类型的可计数数据。 class CD{ public $band = ''; public $title = ''; public $trackList = []; public function __construct($band, $title){ $this->band = $band; $this->title = $title; } public function addTrack($track){ $this->trackList = $track; } } class CDSearchByBandIterator implements Iterator{ private $_CDs = []; private $_valid = false; public function __construct($bandName){ $result = [ ['band' => 'fenghuangchuanqi', 'title' => 'chuanqi', 'tracktitle' => ['yueliangzhishang', 'hetangyuese']], ['band' => 'fenghuangchuanqi', 'title' => 'fenghuang', 'tracktitle'=> ['zuixuanminzufeng']], ['band' => 'tfboys', 'title' => 'ai', 'tracktitle'=> ['zuoshouyoushou']], ]; foreach($result as $v){ if($v['band'] == $bandName){ $cd = new CD($v['band'], $v['title']); $cd->addTrack($v['tracktitle']); $this->_CDs[] = $cd; } } } public function next(){ $this->_valid = (next($this->_CDs) === false)?false:true; } public function rewind(){ $this->_valid = (reset($this->_CDs) === false)?false:true; } public function valid(){ return $this->_valid; } public function current(){ return current($this->_CDs); } public function key(){ return key($this->_CDs); } } $queryItem = 'fenghuangchuanqi'; $cds = new CDSearchByBandIterator($queryItem); echo 'Found the Following CDs'.PHP_EOL; foreach($cds as $cd){ echo 'Band:'.$cd->band.PHP_EOL; echo 'Title:'.$cd->title.PHP_EOL; echo 'Num Tracks:'.count($cd->trackList).PHP_EOL; foreach($cd->trackList as $track){ echo 'TrackTitle:'.$track.PHP_EOL; } echo PHP_EOL; }

答案已隐藏