kozz / class-mapper
类映射器
dev-master
2014-11-03 22:11 UTC
This package is not auto-updated.
Last update: 2024-09-24 02:08:40 UTC
README
使用 JMS 序列化组件映射类属性
为什么使用它
ClassMapper 只能填充简单的映射,而 Normalizer 执行类型转换。因此,它比原始的 JMS 序列化要快得多。
用法
创建一个类似这样的 Map 类
use JMS\Serializer\Annotation\Type; class Map { /** * @Type("integer") */ public $client_id; /** * @Type("integer") */ public $sender_id; /** * @Type("string") */ public $order_requisite; /** * @Type("string") */ public $order_warehouse; }
使用 ClassMapper
现在让我们进行映射
use Kozz\Components\ClassMapper\ClassMapper; $map = new Map(); $mapper = new ClassMapper($map); $mapper->setAttributes([ 'client_id'=>1, 'sender_id'=>2, 'order_requisite'=>3, 'order_warehouse'=>4, ]); $map->order_id; // 1 (integer) $map->sender_id; // 2 (integer) $map->order_requisite; // 3 (integer) $map->order_warehouse; // 4 (integer)
同时使用 ClassMapper 和 Normalizer
Normalizer 是 ClassMapper 的装饰器。它读取 @Type 注解并执行类型转换
use Kozz\Components\ClassMapper\ClassMapper; use Kozz\Components\ClassMapper\Normalizer; $map = new Map(); $mapper = new Normalizer(new ClassMapper($map)); $mapper->setAttributes([ 'client_id'=>'1str', 'sender_id'=>'2str', 'order_requisite'=>'3str', 'order_warehouse'=>'4str', ]); $map->order_id; // 1 (integer) $map->sender_id; // 2 (integer) $map->order_requisite; // '3str' (string) $map->order_warehouse; // '4str' (string)