masfernandez/value-object

0.2.1 2022-10-01 16:20 UTC

This package is auto-updated.

Last update: 2024-09-29 06:08:47 UTC


README

Version Contributors Forks Stargazers Issues MIT License


value-object

收集可重用的 ValueObject,适用于具有 Symfony 验证器集成的 DDD 项目

PHP

报告错误 · 请求功能


Build Status Coverage Status


目录
  1. 关于项目
  2. 入门
  3. 路线图
  4. 贡献
  5. 许可证
  6. 联系
  7. 致谢

关于项目

我创建了此 ValueObject 收集,用于我在工作的项目中使用。

ValueObject 类型

  • 字符串
  • 可为空的字符串
  • Uuid
  • 可为空的 uuid
  • 混合
  • 整型
  • 可为空的整型
  • 浮点数
  • 可为空的浮点数
  • DateTime Y-m-d\TH:i:sP
  • DateTime 毫秒 Y-m-d\TH:i:s.uP
  • 坐标 (x 浮点,y 浮点)

入门

先决条件

N/A

安装

composer require masfernandez/value-object

示例

模型化书籍标题的 ValueObject。它强制执行字符串原始类型,在 StringValueObject 上默认不为空。

<?php

declare(strict_types=1);

namespace My\Awesome\Ddd\Project;

use Masfernandez\ValueObject\StringValueObject;

final class BookTitle extends StringValueObject
{
}
$bookTitle = new BookTitle('Implementing Domain-Driven Design');
echo $bookTitle->value();
echo $bookTitle;
# output

$ Implementing Domain-Driven Design
$ Implementing Domain-Driven Design

错误的书籍标题:不能为空

$bookTitle = new BookTitle('');

'This value is too short. It should have 1 character or more.'

模型化用户电子邮件的 ValueObject。它强制执行字符串原始类型,在 StringValueObject 上默认不为空,并添加一些额外的约束:电子邮件格式和最大长度为 255

<?php

declare(strict_types=1);

namespace My\Awesome\Ddd\Project;

use Masfernandez\ValueObject\StringValueObject;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\Constraints;

final class UserEmail extends StringValueObject
{
    /**
     * @return Constraint[]
     */
    protected static function setConstraints(): array
    {
        return array_merge(
            parent::setConstraints(),
            [
                new Constraints\Email(),
                new Constraints\Length(['max' => 255]),
            ]
        );
    }
}
$userEmail = new UserEmail('mangel.sanfer@gmail.com');
echo $userEmail->value();
echo $userEmail;
# output

$ mangel.sanfer@gmail.com
$ mangel.sanfer@gmail.com

路线图

查看 开放问题 以获取提议的功能(以及已知问题)列表。

贡献

贡献使开源社区成为一个如此美妙的学习、灵感和创造的地方。您所做出的任何贡献都 非常受赞赏

  1. 分支项目
  2. 创建您的功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的更改 (git commit -m '添加一些 AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开拉取请求

许可证

根据 MIT 许可证分发。有关更多信息,请参阅 LICENSE.txt

联系

米格尔·安吉尔·桑切斯·费尔南德斯 - mangel.sanfer@gmail.com

(领英隐藏资料 - 需要登录)

LinkedIn

项目链接: https://github.com/masfernandez/value-object

致谢

统计