vectorial1024/alof-lib

PHP 数组对象函数库。

0.1.0 2023-11-30 16:49 UTC

This package is auto-updated.

Last update: 2024-09-30 01:41:24 UTC


README

stable phpunit downloads license php readthedocs

(这是一个正在进行的项目!)

PHP 数组对象函数库 ("alof-lib")。为类似数组对象提供类型提示函数,就像 原生数组中的那些函数 一样。将这个库视为类似数组对象的那些有用函数的polyfill,这样您就可以使用类似数组对象编写干净的代码。

类似数组对象 ("ALO") 被定义为 实现 ArrayAccess实现 Traversable。类似数组对象的例子包括

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