clea / hydrator
此包已被废弃且不再维护。未建议替代包。
1.1
2017-09-29 06:31 UTC
Requires (Dev)
- phpunit/php-timer: ^1.0
- phpunit/phpunit: ^6.3
This package is not auto-updated.
Last update: 2022-10-29 18:41:16 UTC
README
描述
简单的PHP hydration,支持嵌套对象和集合
要求
PHP >= 7.0
安装
使用composer
composer require clea/hydrator
工作原理
hydrator基于属性的getter返回类型来确定类型
public function getName(): string { ... }
这会将变量简单地转换为字符串。
Transformer类用于在调用setter之前对值进行类型转换或操作。
您可以在示例部分中查看如何添加自定义转换函数。
为了能够注入嵌套对象,您必须定义getter的返回类型
public function getNestedClass(): MyNestedClass { ... }
用法
选项
$settings = [ "additional_type" => [ MyNumber::class => function($value){ return new MyNumber($value); } //... ], "cache" => true ];
示例
use Clea\Hydrator\Hydrator; $data = [ "string" => "value 1", "number" => "10", "notHydrated" => "test", "nested" => [ "field" => "2017-10-10" ], "collection" => [ ["field" => "10.42"], ["field" => "10.42"] ] ]; $hydrator = new Hydrator(); $data = $this->getUserData(); $user = $hydrator->hydrate(User::class, $data);
简单字段转换为字符串
class User { //... /** * @var string */ private $string; /** * @return string */ public function getString(): string { return $this->string; } //... }
简单字段转换为数字
class User { //... /** * @var int */ private $number; /** * @return int */ public function getNumber(): int { return $this->number; } //... }
未注入的字段
class User { //... /** * @noHydrated * @var string */ private $notHydrated; //... }
嵌套字段
class User { //... /** * @var Nested */ private $nested; /** * @return Nested */ public function getNested(): Nested { return $this->nested; } //... }
集合字段
在这种情况下,您需要使用以下相同的语法,注释用于获取集合中实体的类型
您需要给出您类的完整名称:* @var \MyProject\Message[]
class User { //... /** * @var \MyProject\UserChild[] */ private $collection; /** * @return \MyProject\UserChild[] */ public function getCollection(): array { return $this->collection; } //... }
如果您想做出贡献,请随时联系我/创建一个pull request。
MIT许可(MIT)。请参阅LICENSE获取更多信息。