andrew72ru/gql-query-builder
Composer 安装命令:
composer require andrew72ru/gql-query-builder
包简介
GraphGL query builder
README 文档
README
Attention!
The library does not include any http-clients implementations and intended only for build valid queries for some GraphQL servers. The correctness of requests depends of specific GraphQL server implementation.
Installation
composer require andrew72ru/gql-query-builder
Usage
Example query with parameters and variables:
query MyAwesomeScheme($pools: [String!], $objects: [String!], $yesterday: DateTime) {
today: values(pools: $pools, objects: $objects) {
object {
object
expirationDate
}
time
myParam
myOtherParam
}
yesterday: values(pools: $pools, objects: $objects, time: $yesterday) {
object {
object
expirationDate
}
myThirdParam
}
}
The code above returns this query as string
public function createMyQuery()
{
$builder = new Builder();
$builder->setName('MyAwesomeScheme');
$builder->addQueryParam('pools', Builder::TYPE_STRING, true, true)
->addQueryParam('objects', Builder::TYPE_STRING, true, true)
->addQueryParam('yesterday', Builder::TYPE_DATE_TIME, false, false);
$bodyToday = new QueryBody($builder);
$bodyToday->setName('values')
->setVariableName('today')
->addBodyPart(['object' => ['object', 'expirationDate']])
->addBodyPart('time')
->addBodyPart('myParam')
->addBodyPart('myOtherParam');
$bodyToday->addNameParam('pools', 'pools')
->addNameParam('bjects', 'bjects');
$bodyYesterday = new QueryBody($builder);
$bodyYesterday->setName('values')
->setVariableName('yesterday');
$body = [
'object' => [
'object',
'expirationDate',
],
'myThirdParam',
];
$bodyYesterday->setBody($body);
$params = [
[
'name' => 'pools',
'type' => 'pools',
],
[
'name' => 'values',
'type' => 'values',
],
[
'name' => 'time',
'type' => 'yesterday',
]
];
$bodyYesterday->setNameParams($params);
$builder->setBody($bodyToday)->addBodyPart($bodyYesterday);
return $builder->build();
// Or You may use __toString() implementation
// return (string) $builder;
}
Simply query without parameters and variables
query MyAwesomeScheme {
values {
object {
expirationDate
}
time
}
}
Code:
public function createSimpleQuery()
{
$builder = new Builder();
$body = new QueryBody($builder);
$body->setName('quotes')
->setBody([
'symbol' => ['expirationDate'],
'time',
]);
$builder->setBody($body)
->setName('TradingSchema');
return (string) $builder;
}
Contributing
You are welcome! :)
Testing
Tests are implemented with Codeception framework.
- Clone this repository;
- install requirements (
composer install --dev); - run tests:
vendor/bin/codecept run --coverage-html
andrew72ru/gql-query-builder 适用场景与选型建议
andrew72ru/gql-query-builder 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3.57k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2018 年 02 月 13 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 andrew72ru/gql-query-builder 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 andrew72ru/gql-query-builder 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 3.57k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 7
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-02-13