114培訓(xùn)網(wǎng)歡迎您來到??诓﹥?yōu)電腦培訓(xùn)!

400-850-8622

全國統(tǒng)一學(xué)習(xí)專線 8:30-21:00

??赑HP設(shè)計(jì)模式培訓(xùn)

授課機(jī)構(gòu):??诓﹥?yōu)電腦培訓(xùn)

關(guān)注度:432

課程價(jià)格: 請(qǐng)咨詢客服

上課地址:請(qǐng)咨詢客服

開課時(shí)間:滾動(dòng)開班

咨詢熱線:400-850-8622

在線報(bào)名

課程詳情在線報(bào)名

更新時(shí)間:2024-10-24
??赑HP設(shè)計(jì)模式培訓(xùn),海口PHP設(shè)計(jì)模式培訓(xùn)學(xué)校,??赑HP設(shè)計(jì)模式培訓(xùn)機(jī)構(gòu) 今天《PHP設(shè)計(jì)模式漫談》系列的主角是迭代器(Iterator)模式,它在一個(gè)很常見的過程上提供了一個(gè)抽象:位于對(duì)象圖不明部分的一組對(duì)象(或標(biāo)量)集合上的迭代。迭代有幾種不同的具體執(zhí)行方法:在數(shù)組屬性,集合對(duì)象,數(shù)組,甚至一個(gè)查詢結(jié)果集之上迭代。 在對(duì)象的世界里,迭代器模式要維持類似數(shù)組的功能,看作是一個(gè)非侵入性對(duì)象刻面(facet),Client類往往分離自真實(shí)對(duì)象實(shí)現(xiàn),指iterator接口。只要有可能,我們可以給迭代器傳送一個(gè)引用,代替將來可能發(fā)生變化的具體或抽象類。 參與者: ◆客戶端(Client):引用迭代器模式的方法在一組值或?qū)ο笊蠄?zhí)行一個(gè)循環(huán)。 ◆迭代器(Iterator):在迭代過程上的抽象,包括next(),isFinished(),current()等方法。 ◆具體迭代器(ConcreteIterators):在一個(gè)特定的對(duì)象集,如數(shù)組,樹,組合,集合等上實(shí)現(xiàn)迭代。 通過Traversable接口,PHP原生態(tài)支持迭代器模式,這個(gè)接口由Iterator和IteratorAggregate做了擴(kuò)展,這兩個(gè)子接口不僅是定義了一套標(biāo)準(zhǔn)的方法,每個(gè)Traversable對(duì)象都可以原封不動(dòng)地傳遞給foreach(),foreach是迭代器的主要客戶端,Iterator實(shí)現(xiàn)是真正的迭代器,而IteratorAggregate是有其它職責(zé)的Traversable對(duì)象,它通過getIterator()方法返回一個(gè)Iterator。 標(biāo)準(zhǔn)PHP庫是PHP中綁定的*通用目的面向?qū)ο髱欤x了額外的接口和公用類。OuterIterator實(shí)現(xiàn)裝飾一個(gè)Iterator,CachingIterator和LimitIterator是這個(gè)接口的兩個(gè)例子。 RecursiveIterator是Iterator接口為樹形結(jié)構(gòu)實(shí)現(xiàn)的一個(gè)擴(kuò)展,它定義了一組額外的方法檢查迭代中當(dāng)前元素的子對(duì)象是否存在。RecursiveArrayIterator和RecursiveDirectoryIterator是這個(gè)接口的實(shí)現(xiàn)示例,這些類型的迭代器可以原樣使用,或是用一個(gè)RecursiveIteratorIterator橋接到一個(gè)普通的迭代器契約。這個(gè)OuterIterator實(shí)現(xiàn)將會(huì)根據(jù)構(gòu)造參數(shù)執(zhí)行深度優(yōu)先或廣度優(yōu)先遍歷。 使用RecursiveIteratorIterator時(shí),可以將其傳遞給foreach,請(qǐng)看后面的代碼示例,了解RecursiveIterators的不同用法和它們的超集Iterator。*,SeekableIterators向契約添加了一個(gè)seek()方法,它可以用于移動(dòng)Iterator的內(nèi)部狀態(tài)到一個(gè)特定的迭代點(diǎn)。 注意,迭代器是比對(duì)象集更好的抽象,因?yàn)槲覀兛梢宰孖nfiniteIterators,NoRewindIterators等,不用與普通數(shù)組陣列與一致,因此,Iterator缺少count()函數(shù)等功能。 在PHP官方手冊(cè)中可以找到完整的SPL迭代器列表。得益于對(duì)PHP的強(qiáng)力支持,使用迭代器模式的大部分工作都包括在標(biāo)準(zhǔn)實(shí)現(xiàn)中,下面的代碼示例就利用了標(biāo)準(zhǔn)Iterator和RecursiveIterators的功能。
姓名不能為空
手機(jī)號(hào)格式錯(cuò)誤