mbretter/stk-immutable

Stk 不变数据对象

2.1.0 2023-07-07 05:32 UTC

This package is auto-updated.

Last update: 2024-09-09 12:51:30 UTC


README

License PHP 8 CI codecov Latest Stable Version Total Downloads

此库实现了用于持有某种类型数据的对象的不可变设计模式。

映射

映射可以存储对象(stdClass)和/或数组,它们可以嵌套,当从/向无SQL数据库(如MongoDB)读取/写入时非常有用。

use Stk\Immutable\Map;

$a = new Map((object)['x' => 'foo', 'y' => 'bar']);
$b = $a->set('x', 'whatever');

调用对象$a上的set方法不会修改它,而是返回一个带有修改的克隆,原始映射将永远不会被修改。

比较两个映射非常简单,无需编写复杂且消耗资源的比较函数,只需使用相同的操作符即可。

if ($a === $b) {
    ...
}