aeviiq/value-object

A library that provides strict value objects in PHP.

v1.0.1 2024-01-18 09:54 UTC

This package is auto-updated.

Last update: 2024-04-18 10:33:11 UTC


README

Why

To provide an easy way to create value objects in PHP. Validation can be done by using the Symfony Validator component (https://github.com/symfony/validator and its documentation https://symfony.com/doc/current/validation.html#constraints). This also allows for easy integration with the Symfony Form component, as the value object constraints are defined statically.

Installation

composer require aeviiq/value-object

Declaration

<?php 

declare(strict_types=1);

namespace Aeviiq\ValueObject\Value;

use Aeviiq\ValueObject\AbstractString;
use Aeviiq\ValueObject\Normalizer;
use Symfony\Component\Validator\Constraints;

final class Iban extends AbstractString
{
    public static function getConstraints(): array
    {
        return [
            new Constraints\Iban(),
        ];
    }

    protected function normalize($value): string
    {
        return Normalizer::removeWhitespace($value);
    }
}

Usage

$iban = new Iban('Invalid value'); // Results in InvalidArgumentException
$iban = new Iban('NL91 ABNA 0417 1643 00'); // Contains a valid Iban.