[Laravel 扩展包] Laravel Value Objects -- Laravel 多功能值对象包
Laravel Value Objects 是一个你可以在 Laravel 中应用的通用值对象集合。值对象(Value Object) 帮助展示简单的实体,如金额或者 2D 坐标轴中 X/Y 坐标。确切地说,这个包提供了以下这些值对象:
- Boolean
- Number
- Text
- Full Name
- Name
- Tax Number
- UUID
比如用户的全名,你需要将 name 字符串拆分成姓氏和名字:
$name = new FullName(' Joe User ');
$name->fullName(); // 'Joe User'
$name->firstName(); // 'Joe'
$name->lastName(); // 'User'
这个包同时也提供过了一些 专用于 Laravel 的接口,比如通过 Laravel 的 Macroable
trait 和 Conditionable
trait 扩展值对象。
TaxNumber::from('PL0123456789')
->when(function ($number) {
return $number->prefix() !== null;
})
->prefix();
另一个例子是 Number 值对象,你可以用来限定数字的刻度(小数点位数):
$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()
静态构造器创建值对象,处理验证数据。