濮阳杆衣贸易有限公司

主頁 > 知識庫 > PHP中的Iterator迭代對象屬性詳解

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

熱門標(biāo)簽:保定crm外呼系統(tǒng)運營商 七魚外呼系統(tǒng)停用嗎 智能電話機器人排名前十名南京 海南人工外呼系統(tǒng)有效果嗎 抖音有個地圖標(biāo)注是什么意思 阿里云400電話申請加工單 地下城堡2圖九地圖標(biāo)注 西區(qū)企業(yè)怎么做地圖標(biāo)注入駐 九江外呼系統(tǒng)

前言

foreach用法和之前的數(shù)組遍歷是一樣的,只不過這里遍歷的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>';
}

輸出結(jié)果為:

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

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

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

該接口,實現(xiàn)了foreach需要的每個操作。foreach的執(zhí)行流程如下圖:

看圖例中,foreach中有幾個關(guān)鍵步驟:5個。

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

當(dāng)foreach去遍歷對象時, 如果發(fā)現(xiàn)對象實現(xiàn)了Ierator接口, 則執(zhí)行以上5個步驟時, 不是foreach的默認行為, 而是調(diào)用對象的對應(yīng)方法即可:

示例代碼:

class Team implements Iterator {

  //private $name = 'itbsl';
  //private $age = 25;
  //private $hobby = 'fishing';

  private $info = ['itbsl', 25, 'fishing'];

  public function rewind()
  {
    reset($this->info); //重置數(shù)組指針
  }

  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>';
}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • PHP之預(yù)定義接口詳解
  • PHP中預(yù)定義的6種接口介紹
  • PHP聚合式迭代器接口IteratorAggregate用法分析
  • PHP迭代器接口Iterator用法分析
  • PHP設(shè)計模式之迭代器模式Iterator實例分析【對象行為型】
  • PHP設(shè)計模式之迭代器(Iterator)模式入門與應(yīng)用詳解
  • PHP使用DirectoryIterator顯示下拉文件列表的方法
  • php中通過DirectoryIterator刪除整個目錄的方法
  • PHP預(yù)定義接口——Iterator用法示例

標(biāo)簽:梅河口 昭通 十堰 甘肅 遼陽 涼山 九江 韶關(guān)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP中的Iterator迭代對象屬性詳解》,本文關(guān)鍵詞  PHP,中的,Iterator,迭代,對象,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP中的Iterator迭代對象屬性詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP中的Iterator迭代對象屬性詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    玉屏| 黄浦区| 都安| 界首市| 松原市| 临潭县| 宣威市| 玉山县| 通道| 井研县| 石柱| 嘉兴市| 崇州市| 宁城县| 浏阳市| 广平县| 新密市| 西昌市| 宜兰县| 阿拉尔市| 濉溪县| 明水县| 鄱阳县| 上饶县| 绍兴市| 光山县| 临泉县| 门头沟区| 潼关县| 靖边县| 丹江口市| 突泉县| 大新县| 海林市| 金阳县| 桦南县| 马山县| 兴隆县| 南陵县| 汤阴县| 平罗县|