decodelabs/tightrope

为您的PHP类提供可重用的约束

v0.1.2 2023-09-26 11:33 UTC

This package is auto-updated.

Last update: 2024-09-04 21:38:05 UTC


README

PHP from Packagist Latest Version Total Downloads GitHub Workflow Status PHPStan License

为您的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