• php spl库的使用(PHP标准库)【摘抄引用】


    文章来源与推荐阅读阮一峰--PHP SPL笔记  &&  PHP SPL使用方法和他的威力 

    1.SPL 是什么?

    • SPL:standard php library php标准库,此 从php5.0起开始内置的组件和接口,在5.3以后逐渐成熟。因为内置在php5开发环境中,无需任何配置。

       根据官方定义,“a collection of interfaces and classes that are meant to solve standard problems.” 然而在目前的使用者,spl更多地被看做是一种使object模仿的array行为的interfaces和classes。

    • SPL对PHP引擎进行了扩展,例如ArrayAccess、Countable和SeekableIterator等接口,它们用于以数组形式操作对象。同时还可以使用RecursiveIterator,ArrayObjects等其他迭代器进行数组的迭代操作。 

         他还内置了几个对象,例如Exceptions,SplObserver,spltorage以及splautoloadregister,splclasses,iteratorapply等的帮助函数,用于重载对应的功能。

    2.Iterator

    • spl的核心概念是Iterator,这指一种设计模式(Design Pattern),"provide an object which traverses some aggregate structure,abstracting away assumptions about the implementation of that structure." 通俗的说,Iterator能够使许多不同的数据结构,都能有统一的操作界面,比如一个数据库的结果集、同一目录的文件集或者一个文本中每一行构成的集合。
    • SPL规定,所有部署了Iterator界面的class,都可以用在foreach loop中。Iterator界面包含以下必须部署的五个方法:
    * 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那样操作,但是必须包含四个必须部署的方法
     
     * offsetExists($offset)
    
          This method is used to tell php if there is a value
          for the key specified by offset. It should return 
          true or false.
    
        * offsetGet($offset)
    
          This method is used to return the value specified 
          by the key offset.
    
        * offsetSet($offset, $value)
    
          This method is used to set a value within the object, 
          you can throw an exception from this function for a 
          read-only collection.
    
        * offsetUnset($offset)
    
          This method is used when a value is removed from 
          an array either through unset() or assigning the key 
          a value of null. In the case of numerical arrays, this 
          offset should not be deleted and the array should 
          not be reindexed unless that is specifically the 
          behavior you want.
    • IteratorAggregate界面
    • RecursiveIterator界面
    这个界面用于遍历多层数据,继承了Iterator界面,因而也具有标准的current()/key()/next()和valid()方法。同时它自己还规定了getChildren()和hasChildren()方法。
    • SeekableIterator界面
    SeekableIterator界面也是Iterator界面的延伸,除了Iterator的五个方法以外,还规定了seek()方法,参数是元素的位置,返回该元素。若该位置不存在,则抛出OutOfBoundsException。
    • Countable界面
    这个界面规定了一个count()方法,返回结果集的数量
     
    3.SPL Classes
    • spl内置类
      查看所有内置类 
    foreach(spl_classes() as $key=>$val){
        echo $key."=>".$val.'<br/>';
    }
    • DirectoryIterator类
            这个类用来查看一个目录中所有文件和子目录
    foreach(new DirectoryIterator('./') as $Item)
    {
      echo $Item.'<br/>';
    }
    catch(Exception $e)
    {
        echo 'No files Found!';
    }
    • ArrayObject类
            此类将Array转换为Object
    • ArrayIterator类
            这个类实际上是对ArrayObject类的补充,为后者提供遍历功能。也支持offset类方法和count()方法
    • RecursiveArrayIterator类和RecursiveIteratorIterator类
            ArrayIterator类和ArrayObject类,只支持遍历一维数组,如果要遍历多维数组,必须先用RecursiveIteratorIterator生成一个Iterator,然后再对这个Iterator使用RecursiveIteratorIterator
    • FilterIterator
            FilterIterator类可以对元素进行过滤,只要在accept()方法中设置过滤条件就可以了。
    • SimpleXMLIterator类
            这个类用来遍历xml文件
    • CachingIterator类
            这个类有一个hasNext()方法,用来判断是否还有下一个元素
    • LimitIterator类
            这个类用来限定返回结果集的数量和位置,必须提供offset和limit两个参数,与SQL命令中的limit语句类似
    • SplFileObject类
            这个类用来对文本文件进行遍历
     
     
     
  • 相关阅读:
    SQLZOO:SELECT from WORLD Tutorial
    Spyder——小技巧+快捷键
    JDK国内镜像
    debian 安装 plymouth 美化开机动画
    docker 国内镜像加速
    有关npm镜像加速的问题 yarn nvm yrm
    调整vscode工具栏侧边栏字体大小
    github的淘宝代理?
    fcitx5 主题设置
    debian testing安装qemu-kvm和virt-manager
  • 原文地址:https://www.cnblogs.com/ddddemo/p/5623522.html
Copyright © 2020-2023  润新知