国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP中的Iterator迭代對象屬性詳解

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

前言

foreach用法和之前的數組遍歷是一樣的,只不過這里遍歷的key是屬性名,value是屬性值。在類外部遍歷時,只能遍歷到public屬性的,因為其它的都是受保護的,類外部不可見。

class HardDiskDrive {  public $brand;  public $color;  public $cpu;  public $workState;  protected $memory;  protected $hardDisk;  private $price;  public function __construct($brand, $color, $cpu, $workState, $memory, $hardDisk, $price) {    $this->brand = $brand;    $this->color = $color;    $this->cpu  = $cpu;    $this->workState = $workState;    $this->memory = $memory;    $this->hardDisk = $hardDisk;    $this->price = $price;  }}$hardDiskDrive = new HardDiskDrive('希捷', 'silver', 'tencent', 'well', '1T', 'hard', '$456');foreach ($hardDiskDrive as $property => $value) {  var_dump($property, $value);  echo '<br>';}

輸出結果為:

string(5) "brand" string(6) "希捷" 
string(5) "color" string(6) "silver" 
string(3) "cpu" string(7) "tencent" 
string(9) "workState" string(4) "well" 

通過輸出結果我們也可以看得出來常規遍歷是無法訪問受保護的屬性的。

如果我們想遍歷出對象的所有屬性,就需要控制foreach的行為,就需要給類對象,提供更多的功能,需要繼承自Iterator的接口:

該接口,實現了foreach需要的每個操作。foreach的執行流程如下圖:

PHP,Iterator,迭代對象,屬性

看圖例中,foreach中有幾個關鍵步驟:5個。

而Iterator迭代器中所要求的實現的5個方法,就是用來幫助foreach,實現在遍歷對象時的5個關鍵步驟:

當foreach去遍歷對象時, 如果發現對象實現了Ierator接口, 則執行以上5個步驟時, 不是foreach的默認行為, 而是調用對象的對應方法即可:

PHP,Iterator,迭代對象,屬性

示例代碼:

class Team implements Iterator {  //private $name = 'itbsl';  //private $age = 25;  //private $hobby = 'fishing';  private $info = ['itbsl', 25, 'fishing'];  public function rewind()  {    reset($this->info); //重置數組指針  }  public function valid()  {    //如果為null,表示沒有元素,返回false    //如果不為null,返回true    return !is_null(key($this->info));  }  public function current()  {    return current($this->info);  }  public function key()  {    return key($this->info);  }  public function next()  {    return next($this->info);  }}$team = new Team();foreach ($team as $property => $value) {  var_dump($property, $value);  echo '<br>';}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


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

圖片精選

主站蜘蛛池模板: 都匀市| 板桥市| 龙泉市| 阿合奇县| 台湾省| 孟津县| 安西县| 观塘区| 凤山县| 汝阳县| 广西| 望城县| 吴桥县| 西林县| 金塔县| 东乡县| 寻甸| 屏东市| 右玉县| 梁山县| 郯城县| 合作市| 都江堰市| 班玛县| 岳普湖县| 元氏县| 策勒县| 玉溪市| 渑池县| 嫩江县| 香港 | 雷州市| 海宁市| 汶川县| 金溪县| 通海县| 泸州市| 林周县| 泊头市| 行唐县| 蒙自县|