在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當(dāng)前位置:雨林木風(fēng)下載站 > 網(wǎng)頁(yè)設(shè)計(jì)教程 > 詳細(xì)頁(yè)面

對(duì)php中IteratorIterator的理解(代碼示例)

對(duì)php中IteratorIterator的理解(代碼示例)

更新時(shí)間:2025-12-03 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

導(dǎo)網(wǎng)頁(yè)的本質(zhì)就是超級(jí)文本標(biāo)記語(yǔ)言,通過(guò)結(jié)合使用其他的Web技術(shù)(如:腳本語(yǔ)言、公共網(wǎng)關(guān)接口、組件等),可以創(chuàng)造出功能強(qiáng)大的網(wǎng)頁(yè)。因而,超級(jí)文本標(biāo)記語(yǔ)言是萬(wàn)維網(wǎng)(Web)編程的基礎(chǔ),也就是說(shuō)萬(wàn)維網(wǎng)是建立...
網(wǎng)頁(yè)的本質(zhì)就是超級(jí)文本標(biāo)記語(yǔ)言,通過(guò)結(jié)合使用其他的Web技術(shù)(如:腳本語(yǔ)言、公共網(wǎng)關(guān)接口、組件等),可以創(chuàng)造出功能強(qiáng)大的網(wǎng)頁(yè)。因而,超級(jí)文本標(biāo)記語(yǔ)言是萬(wàn)維網(wǎng)(Web)編程的基礎(chǔ),也就是說(shuō)萬(wàn)維網(wǎng)是建立在超文本基礎(chǔ)之上的。超級(jí)文本標(biāo)記語(yǔ)言之所以稱為超文本標(biāo)記語(yǔ)言,是因?yàn)槲谋局邪怂^“超級(jí)鏈接”點(diǎn)。

本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于php中IteratorIterator的理解(代碼示例),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

php之IteratorIterator個(gè)人理解

最近有重新開始搗鼓laravel的源碼了,一年多沒(méi)用實(shí)在是忘的差不多了,每次看都會(huì)從中學(xué)到很多,不懂就趕緊查手冊(cè)。看到加載配置文件的部分(config/*.php),代碼中大量使用spl類庫(kù)和接口,今天就來(lái)扯一下IteratorIterator類,網(wǎng)上資料太少了,加上本人也不是怎么聰明,搞了好幾天才有點(diǎn)眉目,以下是對(duì)它的個(gè)人理解。

IteratorIterator簡(jiǎn)介

IteratorIterator是一個(gè)迭代器包裝器,當(dāng)然它本身也是迭代器。它(假定它叫Outer)在實(shí)例化時(shí)必須傳入一個(gè)實(shí)現(xiàn)了Traversable接口類型的迭代器實(shí)例(假定它叫Inner),當(dāng)然你可以通過(guò)Outer的getInnerIterator方法獲取到這個(gè)傳入的迭代器參數(shù)Inner。你可以通過(guò)Outer的rewind(),next(),valid(),current()和key()方法對(duì)內(nèi)部迭代器Inner進(jìn)行處理。

重點(diǎn)理解

  1. 在遍歷Outer的過(guò)程中,Outer只是將rewind(),next(),valid(),current()和key()的任何調(diào)用轉(zhuǎn)發(fā)給內(nèi)部迭代器Inner。

  2. Outer可以對(duì)轉(zhuǎn)發(fā)返回的結(jié)果進(jìn)行包裝,但這并不會(huì)對(duì)Inner產(chǎn)生任何影響。

代碼演示

<?php
namespace young;class InnerIterator implements \Iterator{
    private $dates;
    private $position;

    public function __construct($dates = [])
    {
        $this->dates    = $dates;
        $this->position = 0;
    }

    public function rewind()
    {
        echo 'call ' . __METHOD__ . '<br>';
        reset($this->dates);
    }

    public function valid() 
    {
        echo 'call ' . __METHOD__ . '<br>';
        if ($this->position >= count($this->dates)) {
            # code...
            return false;
        }
        return true;
    }

    public function current()
    {
        echo 'call ' . __METHOD__ . '<br>';
        return $this->dates[$this->position];
    }

    public function key()
    {
        echo 'call ' . __METHOD__ . '<br>';
        return $this->position;
    }

    public function next()
    {
        echo 'call ' . __METHOD__ . '<br>';
        ++$this->position;
    }}class OuterIterator extends \IteratorIterator{
    function rewind()
    {
        echo __METHOD__ .  '<br>';
        return parent::rewind();
    }
    
    function valid()
    {
        echo __METHOD__ . '<br>';
        return parent::valid();
    }
    
    function current()
    {
        echo __METHOD__ . '<br>';
        return parent::current() . '_suffix';
    }
    
    function key()
    {
        echo __METHOD__ . '<br>';
        return parent::key() ;
    }
    
    function next()
    {
        echo __METHOD__ . '<br>';
        return parent::next() ;
    }
    
    function getInnerIterator() 
    {
        echo __METHOD__ . '<br>';
        return parent::getInnerIterator();
    }}$tmpArr = array(
    '2018-10-01',
    '2018-10-02',
    //'2018-10-03',);$inner = new InnerIterator($tmpArr);$outer = new OuterIterator($inner);foreach ($outer as $key => $value) {
    # code...
    echo $key , '=>' , $value . '<hr>';}

運(yùn)行結(jié)果:

young\OuterIterator::rewind
call young\InnerIterator::rewind
call young\InnerIterator::valid
call young\InnerIterator::current
call young\InnerIterator::key
young\OuterIterator::valid
young\OuterIterator::current
young\OuterIterator::key
0=>2018-10-01_suffix
young\OuterIterator::next
call young\InnerIterator::next
call young\InnerIterator::valid
call young\InnerIterator::current
call young\InnerIterator::key
young\OuterIterator::valid
young\OuterIterator::current
young\OuterIterator::key
1=>2018-10-02_suffix
young\OuterIterator::next
call young\InnerIterator::next
call young\InnerIterator::valid
 young\OuterIterator::valid
 object(young\InnerIterator)#1 (2) { 
[“dates”:“young\InnerIterator”:private]=> array(2) { [0]=> 
string(10) “2018-10-01” [1]=> string(10) “2018-10-02” } 
[“position”:“young\InnerIterator”:private]=> int(2) }

結(jié)果分析

Outer的每次迭代會(huì)先調(diào)用自己的方法,然后轉(zhuǎn)發(fā)給Inner。
Outer內(nèi)部方法的返回值都是基于Inner的相對(duì)于方法的返回。
你可以在Outer內(nèi)方法對(duì)Inner的返回值做邏輯處理。
當(dāng)Inner的valid返回false的時(shí)候,外層的Outer也將停止迭代。
Outer內(nèi)的方法對(duì)返回值的修改并不會(huì)影響Inner。
Outer內(nèi)的方法在迭代過(guò)程中并不會(huì)執(zhí)行g(shù)etInnerIterator方法,它只是一個(gè)獲取Inner方法的調(diào)用接口。

一點(diǎn)補(bǔ)充

之前在網(wǎng)上翻閱資料時(shí)會(huì)看到這樣的疑惑

//假如這里還是使用了上面的兩個(gè)類代碼
<?php
namespace young;
class InnerIterator implements \Iterator
{
    //code 這里的代碼假如和上面的一樣
}
class OuterIterator extends \IteratorIterator
{
    //code 這里的代碼假如和上面的一樣
}
$outer->valid();           //false
$outer->current();         // _suffix  問(wèn)題一
$outer->rewind();    
$outer->valid();            //true
$outer->current();         //2018-10-01_suffix
$outer->next()
$outer->rewind();
$outer->current();         //2018-10-02_suffix  問(wèn)題二

這里有兩個(gè)問(wèn)題,

  1. 問(wèn)題一,為什么當(dāng)前current沒(méi)值,valid為false

  2. 問(wèn)題二,問(wèn)什么next后rewind之后,current是第二個(gè)值

從上面的運(yùn)行結(jié)果可知,$outer不執(zhí)行rewind,$inner也不會(huì)執(zhí)行,所以valid返回false,current為null,_suffix只是自己拼接上的。
第二個(gè)問(wèn)題也是很奇怪的,也是剛剛發(fā)現(xiàn)的,$inner的指針只要前進(jìn)了,就回不去了,也就是說(shuō) $inner的position屬性在第一次next之后變成1了,即使你rewind,position還是1,這個(gè)有點(diǎn)蒙蔽啊。。。
所以如果你進(jìn)行了$outer的遍歷操作,第二遍是沒(méi)值輸出的,即使第二遍也執(zhí)行了rewind操作,但是這個(gè)操作在第二遍壓根就沒(méi)用~~~

以上就是對(duì)php中IteratorIterator的理解(代碼示例)的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!


網(wǎng)站建設(shè)是一個(gè)廣義的術(shù)語(yǔ),涵蓋了許多不同的技能和學(xué)科中所使用的生產(chǎn)和維護(hù)的網(wǎng)站。

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 国产av熟女一区二区三区| 欧美三级一级片| 天天爽夜夜爽一区二区三区| 国产免费黄色一级片| 裸体裸乳免费看| 亚洲精品在线网址| 亚洲免费成人在线视频| www.国产视频.com| 精品综合久久久久| 日本女人高潮视频| 超碰10000| 国产精品又粗又长| 日日碰狠狠添天天爽超碰97| 欧美亚洲国产成人| 麻豆传传媒久久久爱| 天天操天天爱天天爽| 男女无套免费视频网站动漫| 91丨九色丨蝌蚪| 亚洲欧美日韩网站| 国产精品久久国产| 99福利在线观看| 日本在线观看a| 17c国产在线| 精品国产一区二区三区在线| 欧美亚洲日本一区二区三区| 国产性生交xxxxx免费| 日韩欧美理论片| 国产精品又粗又长| 天天操天天摸天天爽| 亚洲第一区第二区第三区| 国产乱人伦精品一区二区三区| 黄色成人在线免费观看| 日本精品久久久久中文字幕| 国产亚洲视频一区| 青青在线免费观看| www.久久久精品| 91动漫在线看| 午夜精品久久久久久久99热影院| 国产黄色激情视频| 成人性生生活性生交12| av动漫在线播放| 污污网站免费观看| 青青草国产精品视频| 污视频网址在线观看| 成年人网站国产| 中文字幕1234区| 国产精品免费成人| 日韩视频在线视频| av磁力番号网| 在线观看免费污视频| 伊人成色综合网| 欧美视频在线第一页| 加勒比av中文字幕| 91制片厂毛片| 黄色一级免费大片| 久久久久人妻精品一区三寸| www..com日韩| 国产精品第157页| 警花观音坐莲激情销魂小说 | 色国产在线视频| www.av中文字幕| 91免费版看片| 性久久久久久久久久久久久久| 成年人观看网站| 18岁网站在线观看| 日韩视频在线视频| 我的公把我弄高潮了视频| 天天做天天爱天天高潮| 亚洲三级在线观看视频| 在线视频一二区| 免费不卡av网站| 久久久国产精华液999999 | 久久人人爽av| 黄色三级视频片| 182午夜在线观看| 九九九九九国产| 中文字幕在线观看日 | 欧美精品色视频| 久久av秘一区二区三区| 裸体裸乳免费看| 日日摸日日碰夜夜爽无码| 欧美视频在线观看网站| 久久久久国产精品熟女影院| 天天干在线影院| 亚洲免费视频播放| 欧日韩免费视频| 日韩一级免费在线观看| 色一情一区二区三区| 亚洲天堂第一区| 欧美女人性生活视频| 免费看污污网站| 成人毛片100部免费看| 精品久久一二三| 中文av一区二区三区| 三级在线免费观看| 69堂免费视频| 黄色一级片免费播放| 无码 制服 丝袜 国产 另类| 狠狠热免费视频| 7777在线视频| 日日噜噜噜噜久久久精品毛片| 一级黄色大片儿| 黄色动漫网站入口| 在线无限看免费粉色视频| 黄页免费在线观看视频| 91小视频在线播放| 青青草精品视频在线| 久久撸在线视频| 免费不卡av在线| 国产系列第一页| 冲田杏梨av在线| 99999精品视频| 日本免费黄色小视频| 三上悠亚av一区二区三区| 日本一道本久久| 国产乱子伦精品视频| 欧美性受xxxx黒人xyx性爽| 欧美 激情 在线| 日本人体一区二区| 白白操在线视频| 91香蕉视频网址| av噜噜在线观看| 亚洲第一中文av| www.日本xxxx| 茄子视频成人免费观看| 欧美,日韩,国产在线| 糖心vlog在线免费观看| 国产91av视频在线观看| 少妇一级淫免费播放| 在线观看的毛片| 最近中文字幕一区二区| 国产一区二区视频免费在线观看 | 欧美视频第一区| 黄色免费视频大全| 久久国产亚洲精品无码| 男人日女人bb视频| 精品人妻一区二区三区四区在线| 国产不卡一区二区视频| 男人添女人下面高潮视频| 久久综合色视频| 亚洲 中文字幕 日韩 无码| 三级4级全黄60分钟| 国产视频手机在线播放| www.超碰com| 想看黄色一级片| 性久久久久久久久久久久久久| 99999精品| 福利视频一二区| 91九色在线观看视频| 午夜dv内射一区二区| 激情黄色小视频| 少妇大叫太大太粗太爽了a片小说| 久久亚洲国产成人精品无码区| 国产欧美日韩网站| 午夜视频在线瓜伦| 91网址在线观看精品| 福利在线一区二区| 久久久久久久少妇| 男人的天堂最新网址| 久久久久久久久久伊人| 中文字幕日本最新乱码视频| 日韩欧美xxxx| 大陆极品少妇内射aaaaaa| 91专区在线观看| 亚洲一二三av| 欧美爱爱视频免费看| 国产欧美激情视频| 欧美老熟妇喷水| 中文字幕在线乱| 狠狠操精品视频| 国产精品三级一区二区| 亚洲成人天堂网| 国产免费黄色av| 五月天婷婷在线观看视频| 国产精品333| 欧美日韩视频免费在线观看| 日韩免费毛片视频| 免费看日本黄色| 日本黄色播放器| 男女无套免费视频网站动漫| 91九色丨porny丨国产jk| 国产系列第一页| 一区二区三区韩国| 日本精品一区在线观看| 欧美一二三不卡| 影音先锋男人的网站| 特黄视频免费观看| 99草草国产熟女视频在线| 亚洲人精品午夜射精日韩| 可以免费看的黄色网址| 热久久久久久久久| 不卡的在线视频| 一本色道久久亚洲综合精品蜜桃| 国产男女在线观看| 欧美国产日韩激情| 91免费国产精品| 久久久久久久久久久综合| 五月天色婷婷综合| 警花观音坐莲激情销魂小说| 日本不卡一区二区三区四区|