xakepehok/scalarizer

Scalarizer可以将值对象转换为标量值

0.1.0 2019-08-05 09:29 UTC

This package is auto-updated.

Last update: 2024-09-05 21:25:55 UTC


README

\XAKEPEHOK\Scalarizer\Scalarizer - 组件,可以帮助您从值对象中提取标量值。Scalarizer可以接受任何类型的输入值并尝试返回单个标量值

用法

Scalarizer构造函数接受两个参数

  • 关联数组,其中每个键是类名,值是可以将类转换为标量值的可调用对象
  • 通过反射检查类并尝试返回标量值,如果类只有一个属性
<?php

$scalarizer = new \XAKEPEHOK\Scalarizer\Scalarizer(
    [DateTimeInterface::class => function (DateTimeInterface $dateTime) {
        return $dateTime->format('Y-m-d H:i:s');
    }], 
    true //use reflection
);

echo $scalarizer->scalarize($someValue);

标量化方法优先级

  1. 检查已标量或null值作为输入
  2. 通过规则(可调用对象数组)标量化
  3. 通过实现JsonSerializable::jsonSerialize()方法(如果已实现)标量化对象
  4. 通过实现Class::__toString()方法(如果已实现)标量化对象
  5. 通过反射标量化。如果类只有一个属性,则返回某些值