梦游者 / 属性模型
提供一个使用类型转换的内部属性数组的基模型
3.1.0
2024-03-02 18:33 UTC
Requires
- php: >=8.1
- ext-json: *
- pragmarx/ia-str: ^7.0
Requires (Dev)
- phpunit/phpunit: ^10.5
- somnambulist/collection: ^5.0
- somnambulist/domain: ^6.0
- symfony/var-dumper: ^6.4
README
为依赖于属性数组的模型提供一种类似于ActiveModel类型的基类。包括一个类型转换子系统,用于将属性转换为值。从read-models中提取。
重点是创建用于表示层的只读模型表示。此库由somnambulist/read-models和api-client使用。
要求
- PHP 8.1+
- pragmarx/ia-str
安装
使用composer安装,或从github.com检查/拉取文件。
- composer require somnambulist/attribute-model
使用方法
扩展到模型,例如User;或将其实现到基模型中并添加额外功能。在将属性传递到模型之前,如果需要,请使用属性转换。
<?php use Somnambulist\Components\AttributeModel\AbstractModel; use Somnambulist\Components\AttributeModel\AttributeCaster; use Somnambulist\Components\AttributeModel\TypeCasters\AreaCaster; use Somnambulist\Components\AttributeModel\TypeCasters\MoneyCaster; class User extends AbstractModel { } $caster = new AttributeCaster([ new AreaCaster(), new MoneyCaster(), ]); $attrs = []; $user = new User($caster->cast($attrs, ['area' => 'area', 'money' => 'money',]));
内置转换器
以下转换器是内置的,可以通过类型或属性名称进行大量配置
许多转换器接受用于匹配和类型覆盖的替代属性名称。在适当的地方提供了合适的默认值(例如:json、json_array、json_collection)。
更多转换器可以通过实现接口并附加到AttributeCaster
来添加。
可以通过调用$caster->extend(<type>, [new, types, here])
将现有转换器重用于其他类型。转换器的配置无法更改;它添加了转换器将响应的额外类型键。
测试
使用PHPUnit 9+进行测试。通过vendor/bin/phpunit
运行测试。