梦游者/属性模型

提供一个使用类型转换的内部属性数组的基模型

3.1.0 2024-03-02 18:33 UTC

This package is auto-updated.

Last update: 2024-08-31 00:37:06 UTC


README

GitHub Actions Build Status Issues License PHP Version Current Version

为依赖于属性数组的模型提供一种类似于ActiveModel类型的基类。包括一个类型转换子系统,用于将属性转换为值。从read-models中提取。

重点是创建用于表示层的只读模型表示。此库由somnambulist/read-modelsapi-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运行测试。