PHP 标准库
- 数据结构
- SplDoublyLinkedList
- SplStack
- SplQueue
- SplHeap
- SplMaxHeap
- SplMinHeap
- SplPriorityQueue
- SplFixedArray
- SplObjectStorage
- 迭代器
- AppendIterator
- ArrayIterator
- CachingIterator
- CallbackFilterIterator
- DirectoryIterator
- EmptyIterator
- FilesystemIterator
- FilterIterator
- GlobIterator
- InfiniteIterator
- IteratorIterator
- LimitIterator
- MultipleIterator
- NoRewindIterator
- ParentIterator
- RecursiveArrayIterator
- RecursiveCachingIterator
- RecursiveCallbackFilterIterator
- RecursiveDirectoryIterator
- RecursiveFilterIterator
- RecursiveIteratorIterator
- RecursiveRegexIterator
- RecursiveTreeIterator
- RegexIterator
- 接口
- Countable
- OuterIterator
- RecursiveIterator
- SeekableIterator
- 异常
- BadFunctionCallException
- BadMethodCallException
- DomainException
- InvalidArgumentException
- LengthException
- LogicException
- OutOfBoundsException
- OutOfRangeException
- OverflowException
- RangeException
- RuntimeException
- UnderflowException
- UnexpectedValueException
- 文件处理
- SplFileInfo
- SplFileObject
- SplTempFileObject
- 各种类及接口
- ArrayObject
- SplObserver
- SplSubject
- SPL
- class_implements - 返回指定的类实现的所有接口
- class_parents - 返回指定类的父类
- class_uses - 返回指定类使用的 Trait
- iterator_apply - 为迭代器中每个元素调用一个用户自定义函数
- iterator_count - 计算迭代器中元素的个数
- iterator_to_array - 将迭代器中的元素拷贝到数组
- spl_autoload_call - 尝试调用所有已注册的 __autoload() 函数来装载请求类
- spl_autoload_extensions - 注册并返回 spl_autoload 函数使用的默认文件扩展名
- spl_autoload_functions - 返回所有已注册的 __autoload() 函数
- spl_autoload_register - 注册给定的函数作为 __autoload 的实现
- spl_autoload_unregister - 注销已注册的 __autoload() 函数
- spl_autoload - __autoload() 函数的默认实现
- spl_classes - 返回所有可用的 SPL 类
- spl_object_hash - 返回指定对象的 Hash ID
- spl_object_id - 返回指定对象的整数对象句柄
SPL
class_implements
<?php
interface Foo
{
//
}
class Bar implements Foo
{
//
}
var_dump(class_implements('Foo')); // array(0) { }
var_dump(class_implements('Bar')); // array(1) { ["Foo"]=> string(3) "Foo" }
var_dump(class_implements(new Bar)); // array(1) { ["Foo"]=> string(3) "Foo" }
class_parents
<?php
class Foo
{
//
}
class Bar extends Foo
{
//
}
var_dump(class_parents('Foo')); // array(0) { }
var_dump(class_parents('Bar')); // array(1) { ["Foo"]=> string(3) "Foo" }
var_dump(class_parents(new Bar)); // array(1) { ["Foo"]=> string(3) "Foo" }
class_uses
<?php
trait Foo
{
//
}
class Bar
{
use Foo;
}
var_dump(class_uses('Foo')); // array(0) { }
var_dump(class_uses('Bar')); // array(1) { ["Foo"]=> string(3) "Foo" }
var_dump(class_uses(new Bar)); // array(1) { ["Foo"]=> string(3) "Foo" }
iterator_apply
<?php
/**
* Just a test function.
*
* @param Iterator $iterator
* @return bool
*/
function foo(Iterator $iterator): bool
{
var_dump($iterator->current());
return true;
}
$iterator = new ArrayIterator([2, 3, 5]);
iterator_apply($iterator, 'foo', [$iterator]);
// int(2)
// int(3)
// int(5)
iterator_count
<?php
$iterator = new ArrayIterator();
var_dump(iterator_count($iterator)); // int(0)
$iterator = new ArrayIterator([2, 3, 5, 'foo', 'bar']);
var_dump(iterator_count($iterator)); // int(5)
iterator_to_array
<?php
$iterator = new ArrayIterator(['foo' => 'foo', 'bar' => 'bar']);
var_dump(iterator_to_array($iterator)); // array(2) { ["foo"]=> string(3) "foo" ["bar"]=> string(3) "bar" }
var_dump(iterator_to_array($iterator, false)); // array(2) { [0]=> string(3) "foo" [1]=> string(3) "bar" }
spl_autoload_call
<?php
spl_autoload_call('Foo');
var_dump(new Foo); // object(Foo)#1 (0) { }
spl_autoload_call('Bar');
var_dump(new Bar); // object(Bar)#1 (0) { }
上例中的 Foo.php
文件内容:
<?php
class Foo
{
//
}
上例中的 Bar.php
文件内容:
<?php
class Bar
{
//
}
spl_autoload_extensions
<?php
var_dump(spl_autoload_extensions()); // string(9) ".inc,.php"
var_dump(spl_autoload_extensions('.inc,.php')); // string(9) ".inc,.php"
spl_autoload_functions
<?php
var_dump(spl_autoload_functions());
spl_autoload_register
<?php
/**
* Include the specified file.
*
* @param string $class
* @return void
*/
function foo(string $class)
{
include $class . '.php';
}
$foo = spl_autoload_register('foo');
$bar = spl_autoload_register(function (string $class) {
include $class . '.php';
});
var_dump(new Foo); // object(Foo)#2 (0) { }
var_dump(new Bar); // object(Bar)#2 (0) { }
上例中的 Foo.php
文件内容:
<?php
class Foo
{
//
}
上例中的 Bar.php
文件内容:
<?php
class Bar
{
//
}
spl_autoload_unregister
<?php
/**
* Include the specified file.
*
* @param string $class
* @return void
*/
function foo(string $class)
{
include $class . '.php';
}
$foo = spl_autoload_register('foo');
$bar = spl_autoload_register(function (string $class) {
include $class . '.php';
});
$functions = spl_autoload_functions();
foreach ($functions as $function) {
var_dump(spl_autoload_unregister($function));
}
// bool(true)
// bool(true)
spl_autoload
<?php
spl_autoload_register();
var_dump(new Foo); // object(Foo)#1 (0) { }
var_dump(new Bar); // object(Bar)#1 (0) { }
上例中的 Foo.php
文件内容:
<?php
class Foo
{
//
}
上例中的 Bar.php
文件内容:
<?php
class Bar
{
//
}
spl_classes
<?php
var_dump(spl_classes());
spl_object_hash
<?php
class Foo
{
//
}
var_dump(spl_object_hash(new Foo));
spl_object_id
<?php
class Foo
{
//
}
var_dump(spl_object_id(new Foo));