api-clients / hydrator
Hydrator 是 ocramius/generated-hydrator 的包装,专门用于 API 客户端
Requires
- php: ^7.3
- api-clients/command-bus: ^2.0
- api-clients/resource: ^3.0.1
- doctrine/annotations: ^1.2
- doctrine/cache: ^1.6
- ocramius/generated-hydrator: ^3.0 || ^2.0
- react/promise: ^2.7
- wyrihaximus/doctrine-annotation-autoloader: ^1.0
- wyrihaximus/ticking-promise: ^2 || ^1.6
Requires (Dev)
- api-clients/test-utilities: ^5.4
- phpbench/phpbench: ^0.16 || ^0.17
- dev-master
- 1.1.1
- 1.1.0
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-renovate/configure
- dev-dependabot/add-v2-config-file
- dev-dependabot/composer/phpbench/phpbench-0.17.1
- dev-update-qa-setup
- dev-handler-to-Handler
- dev-api-turn-hydrator-async-each-hydrate-extract-in-its-own-tick
- dev-travis-fix-show-version
- dev-var.ci
This package is auto-updated.
Last update: 2024-09-15 19:31:02 UTC
README
简而言之,这个包是 ocramius/generated-hydrator
的包装,增加了一些用于嵌套、集合和重命名属性的注解。
安装
要使用 Composer 安装,请使用以下命令,它将自动检测最新版本并将其与 ^
绑定。
composer require api-clients/hydrator
预热
为了确保 hydrator 不会阻塞,hydrator 附带了 preheat
方法。给它一个命名空间路径和命名空间本身,它将为找到的每个资源创建 hydrator,并读取给定资源的注解。这确保了在使用 hydrator 之前,所有磁盘 I/O 和重 CPU 操作都已完成。当在异步代码中使用 hydrator 时,最好在运行循环之前创建 hydrator。
设置
在开始使用 Hydrator 之前,必须对其进行设置。请注意,使用此设置方法将同时预热 hydrator。
$loop = LoopFactory::create(); $commandBus = new CommandBus(); // Implementation of ApiClients\Tools\CommandBus\CommandBusInterface $options = []; // Options as described below $hydrator = Factory::create($loop, $commandBus, $options);
注水
hydrator 提供了两种注水方法。第一种是接受 FQCN(完全限定类名)的方法,例如 ApiClients\Client\Github\Resource\Async\Emoji
或 Emoji::class
(简称),以及包含资源内容的 JSON。
$resource = $hydrator->hydrateFQCN(Emoji::class, $json);
或者当你配置了 Options::NAMESPACE
、Options::NAMESPACE_SUFFIX
时,你也可以使用 hydrate
方法,它内部使用 hydrateFQCN
。
$resource = $hydrator->hydrate('Emoji', $json);
提取
资源也可以使用 hydrator 分解为 JSON。
$json = $hydrator->extractFQCN(Emoji::class, $resource);
与 hydrate
方法相同的魔法也适用于 extract
方法,当配置了 Options::NAMESPACE
和 Options::NAMESPACE_SUFFIX
时,它将执行与 extractFQCN
相同的操作。
$json = $hydrator->extract('Emoji', $resource);
选项
Options::ANNOTATIONS
提供一个格式为 key => annotation,value => handler 的数组,以提供额外的注解。
Options::ANNOTATION_CACHE_DIR
资源注解的缓存目录。
Options::NAMESPACE
资源所在的基命名空间,必需。
Options::NAMESPACE_DIR
资源所在基命名空间的文件系统路径,必需。
Options::NAMESPACE_SUFFIX
命名空间后缀,对于相同类型的资源很有用。
Options::RESOURCE_CACHE_DIR
生成资源的缓存目录。
Options::RESOURCE_NAMESPACE
生成资源的命名空间。
许可证
MIT 许可证 (MIT)
版权所有 (c) 2017 Cees-Jan Kiewiet
特此授予任何获得此软件及其相关文档副本(以下简称“软件”)的人免费使用软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供者提供软件的人这样做,前提是以下条件
上述版权声明和本许可声明应包含在软件的副本或主要部分中。
软件按“现状”提供,不提供任何形式的保证,无论是明示的、暗示的、法定的还是其他保证,包括但不限于适销性、适用于特定目的和不受侵犯保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他原因,无论是在软件或其使用或其他交易中产生的。