freyr / identity
A PHP library for Identity concept.
v1.0.1
2026-03-01 17:41 UTC
Requires
- php: ^8.2 || ^8.3 || ^8.4
- symfony/polyfill-php84: ^1.31
- symfony/uid: ^6.4|^7.2
Requires (Dev)
- ergebnis/composer-normalize: ^2.45
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.1
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- phpstan/phpstan-symfony: ^2.0
- phpunit/phpunit: ^11.0 || ^12.0
- symplify/easy-coding-standard: ^12.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Monotonic ULID identity objects for PHP domain models. Provides an immutable Id value object and an IdCollection for working with sets of identifiers.
Installation
composer require freyr/identity
Requires PHP 8.2+.
Usage
Id
Create, convert and compare identifiers.
use Freyr\Identity\Id; $id = Id::new(); $id = Id::fromString('01ARYZ6S41TSV4RRFFQ69G5FAV'); $id = Id::fromBinary($bytes); (string) $id; // ULID string (26 chars, Crockford Base32) $id->toBinary(); // 16-byte binary $id->sameAs($other);
Extend for typed identifiers.
class UserId extends Id {} $userId = UserId::new();
IdCollection
Immutable collection with standard operations.
use Freyr\Identity\IdCollection; $collection = IdCollection::fromArray([$id1, $id2]); $collection = IdCollection::empty(); $collection->add($id); $collection->remove($id); $collection->contains($id); $collection->merge($other); $collection->intersect($other); $collection->filter(fn (Id $id) => /* ... */); $collection->map(fn (Id $id) => /* ... */); $collection->first(); $collection->last(); $collection->count(); $collection->isEmpty(); $collection->toArray(); $collection->toStringArray(); $collection->toBinaryArray();
All mutating methods return new instances.
Licence
MIT