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、splclasses、iteratorapply 等的帮助函数(helper functions),用于重载对应的功能。
类自动加载
目录结构:1
2
3
4|- MyClass
|----Loader.php
|----Test.php
|- index.php
入口文件index.php1
2
3
4
5
6
7
8
9
10<?php
define("BASEDIR", __DIR__);
include BASEDIR . '/MyClass/Loader.php';
spl_autoload_register('\\MyClass\Loader::autoload');
\MyClass\Test::run();
?>
Loader.php1
2
3
4
5
6
7
8
9
10
11<?php
namespace MyClass;
class Loader
{
public static function autoload($class)
{
require_once BASEDIR . '/' . $class . '/php';
}
}
?>
Test.php1
2
3
4
5
6
7
8
9
10
11<?php
namespace MyClass;
class Test
{
public static function run()
{
echo "this is test run!";
}
}
?>
数据结构
栈
1 | $stack = new SplStack(); |
队列
1 | $queue = new SplQueue(); |
堆
1 | $heap = new SplMinHeap(); |
固定尺寸队列
1 | $array = new SplFixedArray(10); |
更多
- 迭代器
- 接口
- 异常
- SPL 函数
- 文件处理
- 各种类及接口
参考手册:http://www.php.net/manual/zh/book.spl.php