api-clients/hydrator

Hydrator 是 ocramius/generated-hydrator 的包装,专门用于 API 客户端

1.1.1 2021-02-18 22:06 UTC

README

License Linux BuildBuild Status Windows BuildBuild status Code Coverage Latest Stable Version Total Downloads PHP 7 ready

简而言之,这个包是 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\EmojiEmoji::class(简称),以及包含资源内容的 JSON。

$resource = $hydrator->hydrateFQCN(Emoji::class, $json);

或者当你配置了 Options::NAMESPACEOptions::NAMESPACE_SUFFIX 时,你也可以使用 hydrate 方法,它内部使用 hydrateFQCN

$resource = $hydrator->hydrate('Emoji', $json);

提取

资源也可以使用 hydrator 分解为 JSON。

$json = $hydrator->extractFQCN(Emoji::class, $resource);

hydrate 方法相同的魔法也适用于 extract 方法,当配置了 Options::NAMESPACEOptions::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

特此授予任何获得此软件及其相关文档副本(以下简称“软件”)的人免费使用软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供者提供软件的人这样做,前提是以下条件

上述版权声明和本许可声明应包含在软件的副本或主要部分中。

软件按“现状”提供,不提供任何形式的保证,无论是明示的、暗示的、法定的还是其他保证,包括但不限于适销性、适用于特定目的和不受侵犯保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他原因,无论是在软件或其使用或其他交易中产生的。