亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP基于SPL實現的迭代器模式示例

2024-05-05 00:03:20
字體:
來源:轉載
供稿:網友

本文實例講述了PHP基于SPL實現的迭代器模式。分享給大家供大家參考,具體如下:

現在有這么兩個類,Department部門類、Employee員工類:

//部門類class Department{  private $_name;  private $_employees;  function __construct($name){    $this->_name = $name;    $this->employees = array();  }  function addEmployee(Employee $e){    $this->_employees[] = $e;    echo "員工{$e->getName()}被分配到{$this->_name}中去";  }}//員工類class Employee{  private $_name;  function __construct($name){    $this->_name = $name;  }  function getName(){    return $this->_name;  }}//應用:$lsgo = new Department('LSGO實驗室');$e1 = new Employee("小錦");$e2 = new Employee("小豬");$lsgo->addEmployee($e1);$lsgo->addEmployee($e2);

好了,現在LSGO實驗室已經有兩個部員了,現在我想把全部的部員都列出來,就是用循環來獲取部門的每個員工的詳情。

在這里我們用PHP中的SPL標準庫提供的迭代器來實現。

《大話設計模式》中如是說:

迭代器模式:迭代器模式是遍歷集合的成熟模式,迭代器模式的關鍵是將遍歷集合的任務交給一個叫做迭代器的對象,它的工作時遍歷并選擇序列中的對象,而客戶端程序員不必知道或關心該集合序列底層的結構。

迭代器模式的作用簡而言之:是使所有復雜數據結構的組件都可以使用循環來訪問

假如我們的對象要實現迭代,我們使這個類實現 Iterator(SPL標準庫提供),這是一個迭代器接口,為了實現該接口,我們必須實現以下方法:

current(),該函數返回當前數據項
key(),該函數返回當前數據項的鍵或者該項在列表中的位置
next(),該函數使數據項的鍵或者位置前移
rewind(),該函數重置鍵值或者位置
valid(),該函數返回 bool 值,表明當前鍵或者位置是否指向數據值

實現了 Iterator 接口和規定的方法后,PHP就能夠知道該類類型的對象需要迭代。

我們使用這種方式重構 Department 類:

class Department implements Iterator{  private $_name;  private $_employees;  private $_position;//標志當前數組指針位置  function __construct($name)  {    $this->_name = $name;    $this->employees = array();    $this->_position = 0;  }  function addEmployee(Employee $e)  {    $this->_employees[] = $e;    echo "員工{$e->getName()}被分配到{$this->_name}中去";  }  //實現 Iterator 接口要求實現的方法  function current()  {    return $this->_employees[$this->_position];  }  function key()  {    return $this->_position;  }  function next()  {    $this->_position++;  }  function rewind()  {    $this->_position = 0;  }  function valid()  {    return isset($this->_employees[$this->_position]);  }}//Employee 類同前//應用:$lsgo = new Department('LSGO實驗室');$e1 = new Employee("小錦");$e2 = new Employee("小豬");$lsgo->addEmployee($e1);$lsgo->addEmployee($e2);echo "LSGO實驗室部員情況:";//這里其實遍歷的$_employeeforeach($lsgo as $val){  echo "部員{$val->getName()}";}

附加:

假如現在我們想要知道該部門有幾個員工,如果是數組的話,一個 count() 函數就 ok 了,那么我們能不能像上面那樣把對象當作數組來處理?SPL標準庫中提供了 Countable 接口供我們使用:

class Department implements Iterator,Countable{  //前面同上  //實現Countable中要求實現的方法  function count(){    return count($this->_employees);  }}//應用:echo "員工數量:";echo count($lsgo);

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线观看免费网站| 日产日韩在线亚洲欧美| 色爱av美腿丝袜综合粉嫩av| 国产精品天天狠天天看| 日韩av在线免费观看一区| 国产精品青草久久久久福利99| 亚洲男子天堂网| 亚洲精品久久7777777| 久久久久久久一| 国产激情999| 日韩欧美高清视频| 欧美日韩一区二区精品| 日本伊人精品一区二区三区介绍| 欧美激情亚洲激情| 黄色一区二区在线| 亚洲老头同性xxxxx| 欧美韩国理论所午夜片917电影| 亚洲成人激情视频| 久久国内精品一国内精品| 日韩av网站大全| 影音先锋欧美精品| 欧美精品在线免费观看| 中文字幕亚洲综合久久| 亚洲欧美日韩精品| 久久视频在线观看免费| 国产精品一区二区三区成人| 欧美精品久久久久a| 在线视频欧美性高潮| 91九色蝌蚪国产| 日韩中文字幕免费看| 久久精视频免费在线久久完整在线看| 中文字幕日韩精品在线观看| 国产精品一久久香蕉国产线看观看| 亚洲精品第一国产综合精品| 久久6精品影院| 久久久久久久一| 日韩av片电影专区| 欧美大片va欧美在线播放| 欧美激情第三页| 麻豆国产精品va在线观看不卡| 欧美人在线视频| 日产精品久久久一区二区福利| 欧美日韩人人澡狠狠躁视频| 这里只有精品丝袜| 亚洲久久久久久久久久久| 欧美日韩亚洲激情| 日韩在线视频网| 色偷偷噜噜噜亚洲男人的天堂| 精品国产一区久久久| 成人av电影天堂| 日韩精品在线播放| 欧美性极品xxxx娇小| 国产精品最新在线观看| 国产suv精品一区二区| 国产成+人+综合+亚洲欧美丁香花| 欧美日韩精品国产| 久久亚洲精品小早川怜子66| 欧美性猛交xxxx富婆弯腰| 国产欧美日韩91| 中文字幕欧美精品在线| 91国自产精品中文字幕亚洲| 国产精品一区专区欧美日韩| 一区二区三区精品99久久| 久久久久久久久久久亚洲| 91精品国产乱码久久久久久久久| 91精品国产高清久久久久久| 亚洲精品福利视频| 77777少妇光屁股久久一区| 亚洲综合在线做性| 欧美最猛性xxxxx(亚洲精品)| 欧美成年人视频网站| 91精品在线观看视频| 国产精品海角社区在线观看| 91久久久久久久久久| 中文字幕精品网| 亚州精品天堂中文字幕| 久久亚洲国产精品| 久久久久久久国产精品| 国产精品视频999| 欧美在线一区二区三区四| 国产丝袜一区视频在线观看| 国产免费亚洲高清| 国产精品久久久久久久久久| 亚洲欧美精品在线| 国产香蕉一区二区三区在线视频| 亚洲电影在线观看| 亚洲成人在线视频播放| 亚洲欧洲国产精品| 久久久久日韩精品久久久男男| 黑人巨大精品欧美一区二区一视频| 日韩欧美亚洲范冰冰与中字| 色偷偷偷亚洲综合网另类| 欧美一区二区三区艳史| 欧美电影免费观看网站| 欧美日韩在线视频一区| 久久亚洲一区二区三区四区五区高| 日韩在线观看电影| 91在线播放国产| 亚洲黄一区二区| 欧美猛交免费看| 青青在线视频一区二区三区| 亚洲美女视频网站| 激情av一区二区| 日韩免费av片在线观看| 在线观看国产精品淫| 97碰碰碰免费色视频| 亚洲电影成人av99爱色| 欧美一级淫片丝袜脚交| 91免费福利视频| 亚洲国产精品推荐| 亚洲美女精品久久| 欧美午夜宅男影院在线观看| 久久伊人精品视频| 亚洲综合一区二区不卡| 欧美不卡视频一区发布| 日本欧美黄网站| 久热精品视频在线观看| 日韩中文字幕第一页| 国产69精品99久久久久久宅男| 久久亚洲一区二区三区四区五区高| 午夜精品久久久久久99热软件| 日韩激情在线视频| 黑人巨大精品欧美一区免费视频| 欧洲亚洲免费在线| 国产精品免费视频xxxx| 国产精品自拍偷拍| 97视频在线观看亚洲| 日韩av一区在线| 日本午夜精品理论片a级appf发布| 日韩hd视频在线观看| 国产在线不卡精品| 成人精品视频久久久久| 精品欧美aⅴ在线网站| 久久韩剧网电视剧| 国产日韩精品一区二区| 日本伊人精品一区二区三区介绍| 国产精品视频久| 秋霞成人午夜鲁丝一区二区三区| 亚洲国产中文字幕在线观看| www国产精品com| 国产精品都在这里| 亚洲乱码国产乱码精品精天堂| 久热精品视频在线| 亚洲a成v人在线观看| 日本成人精品在线| 91久久精品国产91久久| 国产91色在线|免| 国产精品国产亚洲伊人久久| 亚洲一区二区三区毛片| 欧美激情乱人伦| 欧美体内谢she精2性欧美| 精品久久久精品| 欧美激情极品视频| 亚洲国产精品va在线看黑人动漫| 成人激情视频在线观看| 久久久久久久久久久久久久久久久久av| 久久国产精品网站| 国产丝袜一区二区三区| 欧美成人免费在线视频| 欧美激情一区二区三区高清视频| 日韩黄色av网站| 国产精品综合网站| 精品久久久久久亚洲精品| 日韩美女写真福利在线观看|