teknoo/immutable

创建 PHP 不变对象的库

3.0.17 2023-11-29 18:04 UTC

README

Latest Stable Version Latest Unstable Version Total Downloads License PHPStan

这个库通过禁止 __set 和 __unset 调用以及构造函数的几个调用,帮助您创建不可变对象。

快速示例

<?php

declare(strict_types=1);

include 'vendor/autoload.php';

$a = new class implements Teknoo\Immutable\ImmutableInterface {
    use Teknoo\Immutable\ImmutableTrait;

    private array $values = ['foo' => 123];

    public function __get(string $name)
    {
        return $this->values[$name];
    }
};

//Print 123
print $a->foo;
//Throws an Teknoo\Immutable\Exception\ImmutableException
$a->foo = 'bar';
//Throws an Teknoo\Immutable\Exception\ImmutableException;
unset($a->foo);
//Throws an Teknoo\Immutable\Exception\ImmutableException;
$a->__construct(); 

支持此项目

此项目是免费的,并将保持免费。它完全由EIRL的活动支持。如果您喜欢它并帮助我维护和改进它,请不要犹豫,在PatreonGithub上支持我。

谢谢 :) Richard.

致谢

EIRL Richard Déloge - https://deloge.io - 主要开发者。SASU Teknoo Software - https://teknoo.software

关于 Teknoo Software

Teknoo Software 是一家 PHP 软件编辑公司,由 Richard Déloge 创立,作为 EIRL Richard Déloge 的一部分。Teknoo Software 的目标:向我们的合作伙伴和社区提供一套高质量的服务或软件,分享知识和技能。

许可证

Immutable 在 MIT 许可证下授权 - 有关详细信息,请参阅许可证文件夹。

安装和需求

要使用 composer 安装此库,请运行此命令

composer require teknoo/immutable

此库需要

* PHP 8.1+

来自 Teknoo Immutable 3.0 的新闻

此库需要 PHP 8.1 或更高版本。一些更改导致 BC 破坏

  • 切换到只读属性以检测重构的对象

来自 Teknoo Immutable 2.0 的新闻

此库需要 PHP 7.4 或更高版本。一些更改导致 BC 破坏

  • PHP 7.4 是最低要求
  • 大多数方法都已更新,适用于适用的情况包括类型提示。请检查您的扩展点以确保函数签名正确。
  • 切换到类型属性 _ 所有文件都使用严格类型。请确保不要依赖于类型强制。
  • 删除一些无用的 PHP DockBlocks
  • 在 QA 工具中启用 PHPStan 并禁用 PHPMd

贡献 :)

欢迎您为此项目做出贡献。 在 Github 上分叉它