用于Laravel的多用途价值对象扩展包推荐:laravel-value-objects

2023-06-01 00:00:00 对象 扩展 多用途

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中有关于如何使用所提供的每个值对象的文档。

相关文章