azjezz/input-hydrator
Composer 安装命令:
composer require azjezz/input-hydrator
包简介
Hydrates input DTOs from request input.
README 文档
README
Input hydrator is a simple hydrator made for the sole purpose of hydrating data-transfer input objects.
Installation
$ composer require azjezz/input-hydrator
Example:
use AzJezz\Input; final class Search implements Input\InputInterface { public string $query; } /** * @var Search $search */ $search = (new Input\Hydrator())->hydrate(Search::class, $_GET); print $search->query;
While hydrating objects, some exceptions might be thrown:
-
AzJezz\Input\Exception\TypeException: this exception should result in 500 HTTP status code, as it represents an issue within the input class itself. such as the usage of a non-supported type, or missing type for a specific property. -
AzJezz\Input\Exception\BadInputException: this exception should result in a 400 HTTP status code, as it means that the supplied request data doesn't match the input DTO structure.
Currently, Input-Hydrator is limited to a small set of types:
scalar(string,int,float, andbool)null- any object that implements
AzJezz\Input\InputInterface
Union types are supported for PHP >= 8.0, for example:
use AzJezz\Input; final class Filter implements Input\InputInterface { public ?int $maximumPrice; public ?int $minimumPrice; } final class Search implements Input\InputInterface { public string $query; public null|Filter|string $filter = null; } /** * $filter is optional, and is missing from the request, therefore it's gonna contain the default value. * * @var Search $search */ $search = (new Input\Hydrator())->hydrate(Search::class, [ 'query' => 'hello' ]); /** * $search->filter is now an instance of `Filter` * * @var Search $search */ $search = (new Input\Hydrator())->hydrate(Search::class, [ 'query' => 'hello', 'filter' => [ 'maximum_price' => 1000, 'minimum_price' => 10, // the field is optional ( nullable ), so we can remove this line. ] ]); /** * $search->filter is now a string * * @var Search $search */ $search = (new Input\Hydrator())->hydrate(Search::class, [ 'query' => 'hello', // this is okay as the `null|Filter|string` union contains `string` 'filter' => 'maximum_price=1000&minimum_price=10', ]); print $search->query;
License
The MIT License (MIT). Please see LICENSE for more information.
azjezz/input-hydrator 适用场景与选型建议
azjezz/input-hydrator 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 681 次下载、GitHub Stars 达 32, 最近一次更新时间为 2020 年 10 月 31 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 azjezz/input-hydrator 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 azjezz/input-hydrator 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 681
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 32
- 点击次数: 8
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-10-31