Download the PHP package sostariffe/php-graphql-client without Composer
On this page you can find all versions of the php package sostariffe/php-graphql-client. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download sostariffe/php-graphql-client
More information about sostariffe/php-graphql-client
Files in sostariffe/php-graphql-client
Package php-graphql-client
Short Description GraphQL client and query builder.
License MIT
Informations about the package php-graphql-client
PHP GraphQL Client
A GraphQL client written in PHP which provides very simple, yet powerful, query generator classes that make the process of interacting with a GraphQL server a very simple one.
Usage
There are 3 primary ways to use this package to generate your GraphQL queries:
- Query Class: Simple class that maps to GraphQL queries. It's designed to manipulate queries with ease and speed.
- QueryBuilder Class: Builder class that can be used to generate
Query
objects dynamically. It's design to be used in cases where a query is being build in a dynamic fashion. - PHP GraphQL-OQM: An extension to this package. It Eliminates the need to write any GraphQL queries or refer to the API documentation or syntax. It generates query objects from the API schema, declaration exposed through GraphQL's introspection, which can then be simply interacted with.
Installation
Run the following command to install the package using composer:
Object-to-Query-Mapper Extension
To avoid the hassle of having to write any queries and just interact with PHP objects generated from your API schema visit PHP GraphQL OQM repository at: https://github.com/mghoneimy/php-graphql-oqm
Query Examples
Simple Query
This simple query will retrieve all companies displaying their names and serial numbers.
Nested Queries
This query is a more complex one, retrieving not just scalar fields, but object fields as well. This query returns all companies, displaying their names, serial numbers, and for each company, all its branches, displaying the branch address, and for each address, it retrieves all contracts bound to this address, displaying their dates.
Query With Arguments
This query does not retrieve all companies by adding arguments. This query will retrieve the first 3 companies with the name "Tech Co.", displaying their names and serial numbers.
Query With Array Argument
This query is a special case of the arguments query. In this example, the query will retrieve only the companies with serial number in one of 159, 260, and 371, displaying the name and serial number.
Query With Input Object Argument
This query is another special case of the arguments query. In this example, we're setting a custom input object "filter" with some values to limit the companies being returned. We're setting the filter "name_starts_with" with value "Face". This query will retrieve only the companies whose names start with the phrase "Face".
The RawObject class being constructed is used for injecting the string into the query as it is. Whatever string is input into the RawObject constructor will be put in the query as it is without any custom formatting normally done by the query class.
The Query Builder
The QueryBuilder class can be used to construct Query objects dynamically, which can be useful in some cases. It works very similarly to the Query class, but the Query building is divided into steps.
That's how the "Query With Input Object Argument" example can be created using the QueryBuilder:
Constructing The Client
A Client object can easily be instantiated by providing the GraphQL endpoint URL. The Client constructor also receives an optional "authorizationHeaders" array, which can be used to add authorization headers to all requests being sent to the GraphQL server.
Example:
Running Queries
Running query with the GraphQL client and getting the results in object structure:
Or getting results in array structure:
Mutations
Mutations follow the same rules of queries in GraphQL, they select fields on returned objects, receive arguments, and can have sub-fields.
Here's a sample example on how to construct and run mutations:
Mutations can be run by the client the same way queries are run.
Live API Example
GraphQL Pokemon is a very cool public GraphQL API available to retrieve Pokemon data. The API is available publicly on the web, we'll use it to demo the capabilities of this client.
Github Repo link: https://github.com/lucasbento/graphql-pokemon
API link: https://graphql-pokemon.now.sh/
This query retrieves Pikachu's evolutions and their attacks:
That's how this query can be written using the query class and run using the client:
Or alternatively, That's how this query can be generated using the QueryBuilder class:
Running Raw Queries
Although not the primary goal of this package, but it supports running raw string queries, just like any other client
using the runRawQuery
method in the Client
class. Here's an example on how to use it: