Skip to content

Instantly share code, notes, and snippets.

@shiftenterdev
Forked from dunglas/example.php
Created February 20, 2020 05:01
Show Gist options
  • Save shiftenterdev/a49bce12587ddd00680d9d70c6d16c44 to your computer and use it in GitHub Desktop.
Save shiftenterdev/a49bce12587ddd00680d9d70c6d16c44 to your computer and use it in GitHub Desktop.
A minimalist GraphQL client for PHP
<?php
$query = <<<'GRAPHQL'
query GetUser($user: String!) {
user (login: $user) {
name
email
repositoriesContributedTo {
totalCount
}
}
}
GRAPHQL;
graphql_query('https://api.github.com/graphql', $query, ['user' => 'dunglas'], 'my-oauth-token');
<?php
function graphql_query(string $endpoint, string $query, array $variables = [], ?string $token = null): array
{
$headers = ['Content-Type: application/json', 'User-Agent: Dunglas\'s minimal GraphQL client'];
if (null !== $token) {
$headers[] = "Authorization: bearer $token";
}
if (false === $data = @file_get_contents($endpoint, false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => $headers,
'content' => json_encode(['query' => $query, 'variables' => $variables]),
]
]))) {
$error = error_get_last();
throw new \ErrorException($error['message'], $error['type']);
}
return json_decode($data, true);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment