用于Laravel的多用途价值对象扩展包推荐:laravel-value-objects
Laravel价值对象是一个通用的价值对象的集合, 你可以在你的Laravel应用程序中使用.
价值对象有助于表示简单的实体,如货币或二维轴上的X/Y坐标。
具体来说, 这个包提供了以下你通常会遇到的值对象:
布尔值
数字
文本
电子邮件
全名
名称
税号
UUID
以处理一个用户的全名为例,
你可能需要将一个名字字符串分割成一个名字和一个姓氏。
$name = new FullName(' Joe User ');
$name->fullName(); // 'Joe User'
$name->firstName(); // 'Joe'
$name->lastName(); // 'User'
这个包还提供了一些Laravel特有的好东西,
比如通过Laravel的Macroable trait和Laravel的Conditionable trait来扩展价值对象,
当一个条件是 "truthy "时, 就会应用一个回调。
TaxNumber::from('PL0123456789')
->when(function ($number) {
return $number->prefix() !== null;
})
->prefix();
另一个例子是Number value对象,你可以用它来缩放数字,
例如。
$number = new Number('10.20999', scale: 2);
$number = Number::make('10.20999', scale: 2);
$number = Number::from('10.20999', scale: 2);
$number->value(); // '10.20'
(string) $number; // '10.20'
$number->toArray(); // ['10.20']
你也可以看到,这个包提供了一些静态构造函数,
你可以用来创建一个值对象,并通过makeOrNull()静态构造函数处理无效的数据。
你可以在GitHub上了解更多关于这个包的信息,获得完整的安装说明,并查看源代码。
github:
https://github.com/michael-rubel/laravel-value-objects
readme中有关于如何使用所提供的每个值对象的文档。
相关文章