phore/hydrator
Composer 安装命令:
composer require phore/hydrator
包简介
Unserialize arrays into object structure
README 文档
README
serialize / unserialize plain into object structures. Hydrator parses the DocComments of public properties and instanciates the classes according to the definiton.
Examples:
Installation:
composer install phore/hydrator
Basic Example
class UserData { /** * @var string */ public $name; /** * Assoc Array * @var array<string, ClassType2> */ public $map; /** * @var int */ public $age; } $input = ["name"=>"bob", "age"=>37]; $userData = phore_hydrate($input, UserData::class); assert( $userData instanceof UserData);
$userData is a UserData Object and all properties casted correctly
to desired types specified in DocComments.
Recognized Annotations
- Simple types like
string,int,bool,float,array - Array types like
string[],int[]... - Object types
OtherClass - Arrays of Objects
OtherClass[] - Nullable properties
type|null
Guide
Getters / Setters
On objects, hydrator will try to set property values in the following order:
- If object has a
set<PropertyName>($value)-Method it will use it first - If the property is
publicit will be set directly - If there is a
__set($name, $value)method it will be used
Default Values
Default values will be applied if no data was found for the specific key
public $prop1 = []
Optional Properties
You can define a property as optional by adding |null to the
DocBlock.
/**
* @var SomeEntity1|null
*/
public $entity1;
If the input data was not found, the value will be null.
Filter input data before hydration
To ease backwards compatibility issues, the magick __hydrate() method
is called to prefilter the input data before it is hydrated.
class Entity1 { public $p1; public function __hydrate(array $input) : array { // .. modify input to match the object .. return $input; } }
Dealing with additional / undefined input data
By default, on undefined input keys, hydrator will throw an exception. You can toggle this behaviour
phore/hydrator 适用场景与选型建议
phore/hydrator 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4.76k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2020 年 09 月 02 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 phore/hydrator 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 phore/hydrator 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 4.76k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 3
- 依赖项目数: 11
- 推荐数: 1
其他信息
- 授权协议: MIT
- 更新时间: 2020-09-02