用途:在 Laravel 项目中用不可变值对象表示领域概念,如金额、坐标、邮箱地址、处理结果等。资料指出,当领域值带有行为、需要不可变性、丰富校验逻辑、相等比较或封装领域规则时使用值对象;仅用于层间数据传输、无需领域行为时使用 DTO。
主要能力与模式:使用 final readonly class 保证属性不可变且不可继承;通过私有构造函数加静态工厂方法控制实例化,例如 ProcessResult::success()、Money::of()、Money::ofMinor();运算返回新实例而非修改原对象,如 plus、minus、negated;可包装第三方库(如 Brick\Money)并通过 __call() 委托;通常实现 JsonSerializable、Stringable 及 Livewire 的 Wireable 以便序列化与框架集成。
用法示例:ProcessResult 提供 success、skip、fail 工厂方法及 isSuccess、isFail 判断;Money 支持按主单位或最小单位创建、加减与取负、isZero、isGreaterThan、isEqualTo 比较、format 显示,以及 getMinorAmount、getCurrencyCode 存储。目录通常为 app/ValueObjects/。
限制:资料未提供安装命令、版本要求、收费信息或性能数据;完整 Money 实现需查看原文链接。