jeckel-lab/identity-contract

Contract and abstract classes to manage identities in Domains

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

README

Latest Stable Version Total Downloads Build Status codecov Mutation testing badge

Identity-contract

PHP Version Package version
PHP >= 8.2 v2.0
PHP >= 8.0 v1.1

This package propose abstract classes to manage Identities in DDD projects.

Features

Builtin typed identities :

  • integer based identities
  • string based identities
  • uuid based identities

Also:

  • instance are readonly
  • equality test
  • request same identity twice return same object

Usage

Int Identity

final readonly class CarId extends AbstractIntIdentity {}

$id = CarId::from(25);

UUID Identity

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