UNPKG

manual-php

Version:
401 lines (301 loc) 6.61 kB
# 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](#spl) * [class_implements - 返回指定的类实现的所有接口](#classimplements) * [class_parents - 返回指定类的父类](#classparents) * [class_uses - 返回指定类使用的 Trait](#classuses) * [iterator_apply - 为迭代器中每个元素调用一个用户自定义函数](#iteratorapply) * [iterator_count - 计算迭代器中元素的个数](#iteratorcount) * [iterator_to_array - 将迭代器中的元素拷贝到数组](#iteratortoarray) * [spl_autoload_call - 尝试调用所有已注册的 __autoload() 函数来装载请求类](#splautoloadcall) * [spl_autoload_extensions - 注册并返回 spl_autoload 函数使用的默认文件扩展名](#splautoloadextensions) * [spl_autoload_functions - 返回所有已注册的 __autoload() 函数](#splautoloadfunctions) * [spl_autoload_register - 注册给定的函数作为 __autoload 的实现](#splautoloadregister) * [spl_autoload_unregister - 注销已注册的 __autoload() 函数](#splautoloadunregister) * [spl_autoload - __autoload() 函数的默认实现](#splautoload) * [spl_classes - 返回所有可用的 SPL 类](#splclasses) * [spl_object_hash - 返回指定对象的 Hash ID](#splobjecthash) * [spl_object_id - 返回指定对象的整数对象句柄](#splobjectid) ## SPL ### class_implements ```php <?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 <?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 <?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 <?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 <?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 <?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 <?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 <?php class Foo { // } ``` 上例中的 `Bar.php` 文件内容: ```php <?php class Bar { // } ``` ### spl_autoload_extensions ```php <?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 <?php var_dump(spl_autoload_functions()); ``` ### spl_autoload_register ```php <?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 <?php class Foo { // } ``` 上例中的 `Bar.php` 文件内容: ```php <?php class Bar { // } ``` ### spl_autoload_unregister ```php <?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 <?php spl_autoload_register(); var_dump(new Foo); // object(Foo)#1 (0) { } var_dump(new Bar); // object(Bar)#1 (0) { } ``` 上例中的 `Foo.php` 文件内容: ```php <?php class Foo { // } ``` 上例中的 `Bar.php` 文件内容: ```php <?php class Bar { // } ``` ### spl_classes ```php <?php var_dump(spl_classes()); ``` ### spl_object_hash ```php <?php class Foo { // } var_dump(spl_object_hash(new Foo)); ``` ### spl_object_id ```php <?php class Foo { // } var_dump(spl_object_id(new Foo)); ```