jeckel-lab/identity-contract

用于在域中管理身份的合约和抽象类

v2.0.0 2023-10-16 09:14 UTC

README

Latest Stable Version Total Downloads Build Status codecov Mutation testing badge

Identity-contract

本包提出用于在DDD项目中管理身份的抽象类。

特性

内置类型化身份

  • 基于整数的身份
  • 基于字符串的身份
  • 基于UUID的身份

此外

  • 实例为只读
  • 等式测试
  • 请求相同的身份两次返回相同的对象

用法

整数身份

final readonly class CarId extends AbstractIntIdentity {}

$id = CarId::from(25);

UUID身份

use JeckelLab\IdentityContract\AbstractUuidIdentity;

final readonly class UserId extends AbstractUuidIdentity {}

$id = UserId::from("d2fbc6c0-0497-42f1-8ece-8840641b67f0");

// or

$id = UserId::new();

// Generating twice same identity return same object

$id1 = UserId::from("d2fbc6c0-0497-42f1-8ece-8840641b67f0");
$id2 = UserId::from("d2fbc6c0-0497-42f1-8ece-8840641b67f0");

var_dump($id1 === $id2); // true