georgii-web/php-typed-values

Typed value objects library for common php data types.

Installs: 905

Dependents: 0

Suggesters: 0

Security: 0

Stars: 2

Watchers: 1

Forks: 0

Open Issues: 0

pkg:composer/georgii-web/php-typed-values

v3.11.5 2026-01-22 23:15 UTC

README

PHP Typed Values

Typed value objects for PHP. Build precise, immutable, and validated data for DTOs, Value Objects, and Entities.

Latest Version on Packagist Tests Total Downloads

Install

  • Use V3 for PHP 8.4:
composer require georgii-web/php-typed-values:^3
  • Use V2 for PHP >=8.2 & <8.4:
composer require georgii-web/php-typed-values:^2
  • Use V1 for PHP 7.4:
composer require georgii-web/php-typed-values:^1

Why

  • Strong typing for scalars with runtime validation
  • Immutable and self‑documenting values
  • Safer constructors for your DTOs/VOs/Entities
  • Great fit for static analysis

Quick start

Use existing typed values

use PhpTypedValues\Integer\IntegerPositive;

$id = IntegerPositive::fromString('123');

Instead of spreading validation across an application

$id = (int) '123';
if ($id <= 0) {
    throw new InvalidArgumentException('Invalid ID');
}

Create an alias (domain name)

use PhpTypedValues\Integer\IntegerPositive;

readonly class Id extends IntegerPositive {}

Id::fromInt(123);

Other usage examples docs/USAGE.md

Key features

  • Idempotent conversion on fromString() > toString(): "1" > 1 > "1"
  • Static analysis friendly
  • Strict types
  • Validation on construction; no invalid state
  • Immutable, readonly objects
  • No external runtime dependencies
  • Easy to extend with your own types and composites
  • Heavily tested

Performance note

  • Objects vs Scalars:
    • ~2.3× slower for large arrays of objects
    • ~1.5× higher memory usage
  • Use value objects for domain boundaries, validation, and clarity
  • Use raw scalars in hot loops or large data processing paths

Documentation

License

MIT