lbacik/value-object

简单的值对象实现

v1.0 2022-04-03 08:56 UTC

This package is not auto-updated.

Last update: 2024-09-29 20:49:54 UTC


README

PHP Composer codecov

安装

packagist 上的值对象:[https://packagist.org.cn/packages/lbacik/value-object](https://packagist.org.cn/packages/lbacik/value-object)。要安装它,可以使用 [composer](https://getcomposer.org.cn)

composer require lbacik/value-object

示例

以下示例使用断言,但当然不是强制性的 :)

declare(strict_types=1);

use Sushi\ValueObject\Invariant;
use Sushi\ValueObject;

use function PHPUnit\Framework\assertGreaterThanOrEqual;
use function PHPUnit\Framework\assertIsInt;
use function PHPUnit\Framework\assertIsString;

class ExampleValueObject extends ValueObject
{
    private const NAME_MIN_LENGTH = 4;

    public function __construct(
        public readonly string $name,
        public readonly int $age
    ) {
        parent::__construct();
    }

    #[Invariant]
    protected function validateName(): void
    {
        assertGreaterThanOrEqual(self::NAME_MIN_LENGTH, mb_strlen($this->name));
    }

    #[Invariant]
    protected function validateAge(): void
    {
        assertIsInt($this->age);
        assertGreaterThanOrEqual(0, $this->age);
    }
}

$valueObjectOne = new ExampleValueObject(name: "FooBar", age: 30);

有关 更多信息,请访问:[https://lbacik.github.io/php-sushi](https://lbacik.github.io/php-sushi)(即将更新!)