https://github.com/mathsgod/array_to_gql
https://github.com/mathsgod/array_to_gql
Last synced: 30 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/mathsgod/array_to_gql
- Owner: mathsgod
- License: mit
- Created: 2025-07-25T04:03:13.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-07-25T05:30:27.000Z (11 months ago)
- Last Synced: 2025-07-25T07:35:03.035Z (11 months ago)
- Language: PHP
- Size: 22.5 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Array to GraphQL
A PHP library for converting PHP arrays to GraphQL query syntax.
## Features
- 🔧 **Basic Queries**: Support for simple field selection
- 📊 **Nested Queries**: Support for multi-level nested array structures
- 🎯 **Parameterized Queries**: Use `__args` to add query parameters
- 🏷️ **Alias Queries**: Use `__aliasFor` to create GraphQL aliases
- 🎨 **Object Parameters**: Support for complex nested object parameters
- ✅ **Boolean Fields**: `true` values display as field selection, `false` values are ignored
- 🎯 **Value Processing**: All non-`false` values (strings, numbers, `true`) only display key names, not values
- 🔒 **Character Escaping**: Automatic handling of special character escaping
## Installation
```bash
composer require mathsgod/array_to_gql
```
## Usage
### Basic Usage
```php
require 'function.php';
// Simple query - all non-false values only show key names
$result = array_to_gql([
'user' => [
'id' => 1, // Number value → only show key name
'name' => 'John', // String value → only show key name
'email' => true, // true value → show key name
'phone' => false // false value → ignored
]
]);
// Output: user { id name email }
```
### Value Processing Rules
```php
// Value processing rules example
$result = array_to_gql([
'users' => [
'name' => [
'first' => 'John', // String → only show first
'last' => 'Doe' // String → only show last
],
'age' => 25, // Number → only show age
'active' => true, // true → show active
'deleted' => false, // false → completely ignored
'status' => 'online' // String → only show status
]
]);
// Output: users { name { first last } age active status }
```
### Parameterized Queries
```php
// Simple parameters
$result = array_to_gql([
'users' => [
'__args' => [
'limit' => 10
],
'id' => true,
'name' => true
]
]);
// Output: users(limit: "10") { id name }
// Object parameters
$result = array_to_gql([
'users' => [
'__args' => [
'search' => [
'first_name' => 'John',
'last_name' => 'Doe'
]
],
'id' => true,
'name' => true
]
]);
// Output: users(search: {first_name: "John", last_name: "Doe"}) { id name }
```
### Alias Queries
```php
$result = array_to_gql([
'allUsers' => [
'__aliasFor' => 'users',
'__args' => [
'status' => 'active'
],
'id' => true,
'name' => true
]
]);
// Output: allUsers: users(status: "active") { id name }
```
### Complex Nested Queries
```php
$result = array_to_gql([
'posts' => [
'__args' => [
'limit' => 10
],
'id' => true,
'title' => true,
'author' => [
'name' => true,
'profile' => [
'bio' => true,
'avatar' => true
]
]
]
]);
// Output: posts(limit: "10") { id title author { name profile { bio avatar } } }
```
## Running Tests
```bash
# Run all tests
vendor/bin/phpunit
# Run specific test file
vendor/bin/phpunit tests/ArrayToGqlTest.php
# Run tests with detailed output
vendor/bin/phpunit --testdox
```
## Test Coverage
Current tests cover:
- ✅ Basic field selection
- ✅ Nested array structures
- ✅ Boolean value fields
- ✅ Simple and complex parameters
- ✅ Object parameters (multi-level nesting)
- ✅ Alias functionality
- ✅ Alias with parameter combinations
- ✅ Special character escaping
- ✅ Empty array handling
- ✅ Mixed value types
## API Reference
### `array_to_gql($array): string`
Converts a PHP array to a GraphQL query string.
#### Special Keys
- `__args`: Define query parameters
- `__aliasFor`: Define field alias
#### Parameters
- `$array` (array): The PHP array to convert
#### Return Value
- `string`: GraphQL query string
## License
MIT License