masfernandez / value-object
@todo
0.2.1
2022-10-01 16:20 UTC
Requires
- php: >=8.1
- lambdish/phunctional: ^2.1
- longitude-one/doctrine-spatial: ^3.0
- ramsey/uuid: ^4.2
- symfony/uid: ^5.3|^6.1
- symfony/validator: ^5.3|^6.1
Requires (Dev)
- php-coveralls/php-coveralls: ^2.5
- phpstan/phpstan: ^1.8
- phpunit/phpunit: ^9.5
- rector/rector: ^0.14.5
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: *
- vimeo/psalm: ^4.27
This package is auto-updated.
Last update: 2024-09-29 06:08:47 UTC
README
value-object
收集可重用的 ValueObject,适用于具有 Symfony 验证器集成的 DDD 项目
报告错误 · 请求功能
关于项目
我创建了此 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
路线图
查看 开放问题 以获取提议的功能(以及已知问题)列表。
贡献
贡献使开源社区成为一个如此美妙的学习、灵感和创造的地方。您所做出的任何贡献都 非常受赞赏。
- 分支项目
- 创建您的功能分支 (
git checkout -b feature/AmazingFeature
) - 提交您的更改 (
git commit -m '添加一些 AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 打开拉取请求
许可证
根据 MIT 许可证分发。有关更多信息,请参阅 LICENSE.txt
。
联系
米格尔·安吉尔·桑切斯·费尔南德斯 - mangel.sanfer@gmail.com
(领英隐藏资料 - 需要登录)
项目链接: https://github.com/masfernandez/value-object
致谢
- README 模板基于: https://github.com/othneildrew/Best-README-Template
- 变更日志模板基于: https://keepachangelog.com/en/1.0.0/