您当前的位置: 首页 >  php

知其黑、受其白

暂无认证

  • 0浏览

    0关注

    1250博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

PHPSPL 标准库

知其黑、受其白 发布时间:2021-04-25 14:42:07 ,浏览量:0

PHPSPL 标准库

SPL是Standard PHP Library(PHP标准库)的缩写。

官网说,SPL是用来解决典型问题(common problems)的一组接口与类的集合。

那么,什么是common problems呢?
- 数据结构
    解决数据怎么存储问题
- 元素遍历
    数据怎么查看
- 常用方法的统一调用
    数组、集合大小
    自定义遍历
- 类自动加载
    spl_autoload_register
包含哪些内容?
  • 数据结构
  • 基础接口
  • 基础函数
  • 迭代器
  • 异常
  • 其它
SPL接口 Iterator 迭代器接口

SPL规定,所有实现了Iterator接口的class,都可以用在foreach Loop中。Iterator接口中包含5个必须实现的方法:

interface Iterator extends Traversable{
    # 返回当前元素
    public mixed current ( void );
    
    # 返回当前元素的键
    public scalar key ( void );
    
    # 向前移动到下一个元素
    public void next ( void );
    
    # 返回到迭代器的第一个元素
    public void rewind ( void );
    
    # 检查当前位置是否有效
    public boolean valid ( void );
}
ArrayAccess 数组式访问接口

实现ArrayAccess接口,可以使得object像array那样操作。ArrayAccess接口包含四个必须实现的方法:

interface ArrayAccess {
    //检查一个偏移位置是否存在 
    public mixed offsetExists ( mixed $offset  );
    
    //获取一个偏移位置的值 
    public mixed offsetGet( mixed $offset  );
    
    //设置一个偏移位置的值 
    public mixed offsetSet ( mixed $offset  );
    
    //复位一个偏移位置的值 
    public mixed offsetUnset  ( mixed $offset  );
}
IteratorAggregate 聚合式迭代器接口

假设对象A实现了上面的ArrayAccess接口,这时候虽然可以像数组那样操作,却无法使用foreach遍历,除非实现了前面提到的Iterator接口。

另一个解决方法是,有时会需要将数据和遍历部分分开,这时就可以实现IteratorAggregate接口。它规定了一个getIterator()方法,返回一个使用Iterator接口的object。

IteratorAggregate extends Traversable {
    /* 获取一个外部迭代器 */
    abstract public Traversable getIterator ( void )
}

示例:


注意: 虽然都继承自Traversable,但这是一个无法在 PHP 脚本中实现的内部引擎接口。我们直接使用IteratorAggregate 或 Iterator 接口来代替它。

RecursiveIterator

这个接口用于遍历多层数据,它继承了Iterator接口,因而也具有标准的current()、key()、next()、 rewind()和valid()方法。同时,它自己还规定了getChildren()和hasChildren()方法。The getChildren() method must return an object that implements RecursiveIterator。

SeekableIterator

SeekableIterator接口也是Iterator接口的延伸,除了Iterator的5个方法以外,还规定了seek()方法,参数是元素的位置,返回该元素。如果该位置不存在,则抛出OutOfBoundsException。

Countable

这个接口规定了一个count()方法,返回结果集的数量。

SPL数据结构

数据结构是计算机存储、组织数据的方式。

SPL提供了双向链表、堆栈、队列、堆、降序堆、升序堆、优先级队列、定长数组、对象容器。

在这里插入图片描述 参考文献:https://www.cnblogs.com/52fhy/p/5573757.html

关注
打赏
1665558895
查看更多评论
立即登录/注册

微信扫码登录

0.0904s