vectorial1024 / alof-lib
PHP 数组对象函数库。
0.1.0
2023-11-30 16:49 UTC
Requires
- php: >=8.1
Requires (Dev)
- phpunit/phpunit: ^10.4
This package is auto-updated.
Last update: 2024-09-30 01:41:24 UTC
README
(这是一个正在进行的项目!)
PHP 数组对象函数库 ("alof-lib")。为类似数组对象提供类型提示函数,就像 原生数组中的那些函数 一样。将这个库视为类似数组对象的那些有用函数的polyfill,这样您就可以使用类似数组对象编写干净的代码。
类似数组对象 ("ALO") 被定义为 实现 ArrayAccess 和 实现 Traversable。类似数组对象的例子包括
- ArrayObject(自 PHP 5 开始)
- ArrayIterator(自 PHP 5 开始)
- SplObjectStorage(自 PHP 5.1 开始)
- SplDoublyLinkedList(自 PHP 5.3 开始)
- SplFixedArray(自 PHP 5.3 开始)
- SplStack(自 PHP 5.3 开始)
- SplQueue(自 PHP 5.3 开始)
- WeakMap(自 PHP 8 开始)
- ... 可能还有更多
PHP 的 array 不是一个 ALO。它仍然是一个数组。
最新版本需要 PHP 8.1+。
在 CHANGELOG.md 文件中查看变更日志。
注意事项和免责声明
- ALO 函数旨在忠实于其数组函数对应物的用户空间再现,但两侧可能存在细微差异
- 某些 ALO 函数可能不适用于您的确切 ALO 实现;在使用 ALO 函数之前请谨慎使用
测试
此库使用 PHPUnit 进行测试,可以从 Composer 触发。要测试此库,请运行
composer run-script test
示例用法
有关更多示例,请参阅 /tests 目录下的测试用例,但以下是一个最小示例
use Vectorial1024\AlofLib\Alof; $objKey = new stdClass(); $objKey->name = "foo"; // conveniently get the keys of the WeakMap (WeakMap becomes a "WeakHashSet" for objects) $map = new WeakMap(); $map[$objKey] = "1"; $map[$objKey] = 2; $map[$objKey] = "Hello World!"; $keys = Alof::alo_keys($map); assert($keys === [$objKey]); // passes // correctly get the keys of the SplObjectStorage (no more nasty foreach surprises!) $splObjectStore = new SplObjectStorage(); $splObjectStore[$objKey] = "Hello World!"; $keys = Alof::alo_keys($splObjectStore); assert($keys === [$objKey]); // passes