1.SPL 是什么?
SPL:standard php library php標(biāo)準(zhǔn)庫(kù),此 從php5.0起開始內(nèi)置的組件和接口,在5.3以后逐漸成熟。因?yàn)閮?nèi)置在php5開發(fā)環(huán)境中,無需任何配置。
根據(jù)官方定義,“a collection of interfaces and classes that are meant to solve standard problems.”
然而在目前的使用者,spl更多地被看做是一種使object模仿的array行為的interfaces和classes。
SPL對(duì)PHP引擎進(jìn)行了擴(kuò)展,例如ArrayAccess、Countable和SeekableIterator等接口,它們用于以數(shù)組形式操作對(duì)象。同時(shí)還可以使用RecursiveIterator,ArrayObjects等其他迭代器進(jìn)行數(shù)組的迭代操作。
他還內(nèi)置了幾個(gè)對(duì)象,例如Exceptions,SplObserver,spltorage以及splautoloadregister,splclasses,iteratorapply等的幫助函數(shù),用于重載對(duì)應(yīng)的功能。
2.Iterator
spl的核心概念是Iterator,這指一種設(shè)計(jì)模式(Design Pattern),"provide an object which traverses some aggregate structure,abstracting away assumptions about the implementation of that structure."
通俗的說,Iterator能夠使許多不同的數(shù)據(jù)結(jié)構(gòu),都能有統(tǒng)一的操作界面,比如一個(gè)數(shù)據(jù)庫(kù)的結(jié)果集、同一目錄的文件集或者一個(gè)文本中每一行構(gòu)成的集合。
SPL規(guī)定,所有部署了Iterator界面的class,都可以用在foreach loop中。Iterator界面包含以下必須部署的五個(gè)方法:
current()
This method returns the current index's value. You are solely
responsible for tracking what the current index is as the
interface does not do this for you.
key()
This method returns the value of the current index's key. For
foreach loops this is extremely important so that the key
value can be populated.
next()
This method moves the internal index forward one entry.
rewind()
This method should reset the internal index to the first element.
valid()
This method should return true or false if there is a current
element. It is called after rewind() or next().
ArrayAccess界面
部署ArrayAccess界面,可以使object像Array那樣操作,但是必須包含四個(gè)必須部署的方法
ArrayObject類
此類將Array轉(zhuǎn)換為Object
ArrayIterator類
這個(gè)類實(shí)際上是對(duì)ArrayObject類的補(bǔ)充,為后者提供遍歷功能。也支持offset類方法和count()方法
RecursiveArrayIterator類和RecursiveIteratorIterator類
ArrayIterator類和ArrayObject類,只支持遍歷一維數(shù)組,如果要遍歷多維數(shù)組,必須先用RecursiveIteratorIterator生成一個(gè)Iterator,然后再對(duì)這個(gè)Iterator使用RecursiveIteratorIterator
FilterIterator
FilterIterator類可以對(duì)元素進(jìn)行過濾,只要在accept()方法中設(shè)置過濾條件就可以了。
SimpleXMLIterator類
這個(gè)類用來遍歷xml文件
CachingIterator類
這個(gè)類有一個(gè)hasNext()方法,用來判斷是否還有下一個(gè)元素
LimitIterator類
這個(gè)類用來限定返回結(jié)果集的數(shù)量和位置,必須提供offset和limit兩個(gè)參數(shù),與SQL命令中的limit語(yǔ)句類似
SplFileObject類
這個(gè)類用來對(duì)文本文件進(jìn)行遍歷
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。