亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

SPL標準PHP類庫(Standard PHP Library)

2020-03-22 19:02:57
字體:
來源:轉載
供稿:網友
  • SPL,PHP 標準庫(Standard PHP Library),此從 PHP 5.0 起內置的組件和接口,并且從 PHP5.3 已逐漸的成熟。SPL 其實在所有的 PHP5 開發環境中被內置,同時無需任何設置。

    似乎眾多的 PHP 開發人員基本沒有使用它,甚至聞所未聞。究其原因,可以追述到它那陽春白雪般的說明文檔,使你忽略了「它的存在」。SPL 這塊寶石猶如鐵達尼克「海洋之心」般,被沉入海底。而現在它應該被我們撈起,并將它穿戴在應有的位置 ,而這也是這篇文章所要表述的觀點。

    那么,SPL提供了什么?

    SPL 對 PHP 引擎進行了擴展,例如 ArrayAccess、Countable 和 SeekableIterator 等接口,它們用于以數組形式操作對象。同時,你還可以使用 RecursiveIterator、ArrayObejcts 等其他迭代器進行數據的迭代操作。

    它還內置幾個的對象例如 Exceptions、SplObserver、Spltorage 以及 splautoloadregister、splhtml' target='_blank'>classes、iteratorapply 等的幫助函數(helper functions),用于重載對應的功能。

    這些工具聚合在一起就好比是把多功能的瑞士軍刀,善用它們可以從質上提升 PHP 的代碼效率。那么,我們如何發揮它的威力?

    重載 autoloader

    如果你是位「教科書式的程序員」,那么你保證了解如何使用 __autoload 去代替 includes/requires 操作惰性載入對應的類,對不?

    但久之,你會發現你已經陷入了困境,首先是你要保證你的類文件必須在指定的文件路徑中,例如在 Zend 框架中你必須使用「_」來分割類、方法名稱(你如何解決這一問題?)。

    另外的一個問題,就是當項目變得越來越復雜, __autoload 內的邏輯也會變得相應的復雜。到最后,甚至你會加入異常判斷,以及將所有的載入類的邏輯如數寫到其中。

    大家都知道「雞蛋不能放到一個籃子中」,利用 SPL 可以分離 __autoload 的載入邏輯。只需要寫個你自己的 autoload 函數,然后利用 SPL 提供的函數重載它。

    例如上述 Zend 框架的問題,你可以重載 Zend loader 對應的方法,如果它沒有找到對應的類,那么就使用你先前定義的函數。


    <?phpclass MyLoader {    public static function doAutoload($class) {        // 本模塊對應的 autoload 操作    }}spl_autoload_register( array('MyLoader', 'doAutoload') );?>

    正如你所見,splautoloadregister還能以數組的形式加入多個載入邏輯。同時,你還可以利用splautoloadunregister移除已經不再需要的載入邏輯,這功能總會用到的。

    迭代器

    迭代是常見設計模式之一,普遍應用于一組數據中的統一的遍歷操作。可以毫不夸張的說,SPL 提供了所有你需要的對應數據類型的迭代器。

    有個非常好的案例就是遍歷目錄。常規的做法就是使用 scandir ,然后跳過「.「 和 「..」,以及其它未滿足條件的文件。例如你需要遍歷個某個目錄抽取其中的圖片文件,就需要判斷是否是 jpg、gif 結尾。

    下面的代碼就是使用 SPL 的迭代器執行上述遞歸尋找指定目錄中的圖片文件的例子:


    <?phpclass RecursiveFileFilterIterator extends FilterIterator {    // 滿足條件的擴展名 www.it165.net    protected $ext = array('jpg','gif');    /**     * 提供 $path 并生成對應的目錄迭代器     */    public function __construct($path) {        parent::__construct(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)));    }    /**     * 檢查文件擴展名是否滿足條件     */    public function accept() {        $item = $this->getInnerIterator();        if ($item->isFile() &&                in_array(pathinfo($item->getFilename(), PATHINFO_EXTENSION), $this->ext)) {            return TRUE;        }    }}// 實例化foreach (new RecursiveFileFilterIterator('/path/to/something') as $item) {    echo $item . PHP_EOL;}?>

    你可能會說,這不是花了更多的代碼去辦同一件事情嗎?那么,查看上面的代碼,你不是擁有了具有高度重用而且可以測試的代碼了嗎

    下面是 SPL 提供的其他的迭代器:

    RecursiveIteratorRecursiveIteratorIteratorOuterIteratorIteratorIteratorFilterIteratorRecursiveFilterIteratorParentIteratorSeekableIteratorLimitIteratorGlobIteratorCachingIteratorRecursiveCachingIteratorNoRewindIteratorAppendIteratorRecursiveIteratorIteratorInfiniteIteratorRegexIteratorRecursiveRegexIteratorEmptyIteratorRecursiveTreeIteratorArrayIterator

    自 PHP5.3 開始,會內置其他更多的迭代器,我想你都可以嘗試下,或許它能改變你編寫傳統代碼的習慣。

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    日韩国产高清污视频在线观看| 国产精品91久久久久久| 欧美黄色性视频| 2019日本中文字幕| 精品国产欧美一区二区三区成人| 亚洲xxx自由成熟| 国产精品女主播视频| 精品中文视频在线| 精品国产一区二区三区久久狼5月| 亚洲影院色在线观看免费| 欧美刺激性大交免费视频| 亚洲全黄一级网站| 91豆花精品一区| 欧美另类极品videosbest最新版本| 亚洲精品白浆高清久久久久久| 亚洲成人动漫在线播放| 亚洲综合国产精品| 国产成人在线一区| 亚洲经典中文字幕| 国产一区玩具在线观看| 亚洲国产一区二区三区四区| 性色av一区二区三区在线观看| 日韩视频免费观看| 亚洲欧洲日产国产网站| 久久亚洲国产成人| 日韩一区二区久久久| www.亚洲人.com| 国产精品视频网站| 国产精品久久久久久亚洲调教| 欧美激情一区二区三级高清视频| 国产高清在线不卡| 欧美激情18p| 中文字幕日韩精品有码视频| 日韩av网址在线| 日本精品免费一区二区三区| 国产精品你懂得| 国产va免费精品高清在线观看| 国产精品一区二区三区成人| 亚洲国产精品久久久久| 最新日韩中文字幕| 性视频1819p久久| 最近2019中文字幕一页二页| 日韩电影在线观看永久视频免费网站| 国产精品福利片| 欧美成年人视频网站欧美| 国产+成+人+亚洲欧洲| 亚洲精品ady| 亚洲欧美日韩视频一区| 精品中文字幕在线观看| 国产精品海角社区在线观看| 欧美黄色免费网站| 欧美日韩美女在线| 久久精品99无色码中文字幕| 亚洲视频在线视频| 日韩av电影院| 亚洲最新av网址| 91精品综合视频| 中文字幕精品—区二区| 在线观看不卡av| 亚洲国产古装精品网站| 91在线视频一区| 亚洲人成电影在线| 欧美丰满片xxx777| 国产精品第2页| 国产精品久久久久久一区二区| 久久国产精品首页| 91精品中国老女人| 姬川优奈aav一区二区| 欧美成人剧情片在线观看| 超碰精品一区二区三区乱码| 中文在线资源观看视频网站免费不卡| 成人在线视频网站| 久久婷婷国产麻豆91天堂| 欧美日韩免费在线观看| 一区二区三区国产在线观看| 国产激情视频一区| 精品日韩美女的视频高清| 国产精品亚洲美女av网站| 亚洲美女中文字幕| 亚洲春色另类小说| 久久久久久久av| 欧美黑人巨大xxx极品| 中文字幕一区电影| 91精品国产高清自在线| 伊人一区二区三区久久精品| 一区二区三区在线播放欧美| 亚洲国产日韩一区| 欧美有码在线观看视频| 91精品国产高清久久久久久| 一区二区中文字幕| 日韩免费在线视频| 日韩电影网在线| 精品毛片三在线观看| 97色在线播放视频| 国产日产欧美a一级在线| 欧美在线精品免播放器视频| 亚洲欧美另类自拍| 欧美一级片免费在线| 国产精品激情自拍| 亚洲欧美在线免费| 欧美片一区二区三区| 国产一区二区三区在线观看网站| 日本欧美黄网站| 欧美日韩综合视频| 久久国产精品影视| 日韩av大片免费看| 久久香蕉精品香蕉| 欧美整片在线观看| 俺去啦;欧美日韩| 高清欧美一区二区三区| 精品国产一区二区三区久久久| 91麻豆国产语对白在线观看| 人人做人人澡人人爽欧美| 欧美高跟鞋交xxxxhd| 在线精品国产成人综合| 国产91精品久久久久| 少妇高潮 亚洲精品| 亚洲电影中文字幕| 久久男人资源视频| 97精品国产97久久久久久春色| 国产精品亚洲自拍| 久久成人精品一区二区三区| 日韩成人免费视频| 亚洲美女在线视频| 欧美一级淫片aaaaaaa视频| 91九色国产视频| 98视频在线噜噜噜国产| 国产精品久久久久久久久久小说| 国产成人鲁鲁免费视频a| 色妞色视频一区二区三区四区| 国自在线精品视频| 成人国产精品久久久| 91精品国产色综合久久不卡98口| 久久国产精品亚洲| 精品视频9999| 国产精品自产拍在线观看| 亚洲欧美视频在线| 亚洲天堂免费观看| 欧美电影在线播放| 久久精品亚洲94久久精品| 深夜福利国产精品| 91在线观看免费| 国产一级揄自揄精品视频| 亚洲欧美一区二区精品久久久| 亚洲国产成人精品久久久国产成人一区| 欧美在线观看网址综合| 成人国产精品久久久久久亚洲| 成人精品视频久久久久| 国产成人精品免费久久久久| 奇米4444一区二区三区| 久久久国产精品x99av| 久久久久久久激情视频| 日韩av免费在线播放| 日韩av在线精品| 久久在线精品视频| 91av在线播放| 国产亚洲精品久久久久动| 国产精品视频久| 日韩av在线一区| 国产91在线播放九色快色| 91在线观看欧美日韩| 成人美女免费网站视频| 国精产品一区一区三区有限在线| 久99久在线视频|