teknoo / immutable
创建 PHP 不变对象的库
3.0.17
2023-11-29 18:04 UTC
Requires
- php: ^8.1
Requires (Dev)
- icanhazstring/composer-unused: ^0.8.10
- phpstan/phpstan: ^1.10.46
- phpunit/phpunit: ^10.4.2
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.7.2
- symfony/property-access: ^6.3||^7.0
This package is auto-updated.
Last update: 2024-09-22 10:19:04 UTC
README
这个库通过禁止 __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的活动支持。如果您喜欢它并帮助我维护和改进它,请不要犹豫,在Patreon或Github上支持我。
谢谢 :) 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 上分叉它