decodelabs / tightrope
为您的PHP类提供可重用的约束
v0.1.2
2023-09-26 11:33 UTC
Requires
- php: ^8.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-04 21:38:05 UTC
README
为您的PHP类提供可重用的约束。
Tightrope是一个中间件包,为库开发者提供了一组可重用的语义约束。
在DecodeLabs博客上获取新闻和更新。
安装
composer require decodelabs/tightrope
用法
Tightrope定义了一系列可重用的接口,表示对象属性,例如可禁用、可读或必填
namespace DecodeLabs\Tightrope; interface Nullable { public function isNullable(): bool; }
它还提供每个接口的清单版本以及特性实现
namespace DecodeLabs\Tightrope\Manifest; use DecodeLabs\Tightrope\Nullable as StaticNullable; interface Nullable extends StaticNullable { public function setNullable(bool $flag): static; }
您可以使用这些接口来定义对象的属性
namespace My\Project; use DecodeLabs\Exceptional; use DecodeLabs\Tightrope\Manifest\Nullable; use DecodeLabs\Tightrope\Manifest\NullableTrait; class MyClass implements Nullable { use NullableTrait; public function doSomething(?string $value): void { if( !$this->isNullable() && $value === null ) { throw Exceptional::InvalidArgument('Value cannot be null'); } // ... } } $myObject = new MyClass(); $myObject->setNullable(true); $myObject->doSomething(null); // Fine $myObject->setNullable(false); $myObject->doSomething(null); // Not fine
可用属性
以下接口目前可用
- 可禁用
- 不可变
- 可为空
- 可读
- 只读
- 必填
- 可写
许可
Tightrope遵循MIT许可证。有关完整的许可证文本,请参阅LICENSE。