1. Go to this page and download the library: Download efabrica/graphql library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
efabrica / graphql example snippets
use Efabrica\GraphQL\Resolvers\ResolverInterface;
use Efabrica\GraphQL\Schema\Definition\Arguments\FieldArgument;
use Efabrica\GraphQL\Schema\Definition\Fields\Field;
use Efabrica\GraphQL\Schema\Definition\Fields\InputObjectField;
use Efabrica\GraphQL\Schema\Definition\ResolveInfo;
use Efabrica\GraphQL\Schema\Definition\Schema;
use Efabrica\GraphQL\Schema\Definition\Types\InputObjectType;
use Efabrica\GraphQL\Schema\Definition\Types\ObjectType;
use Efabrica\GraphQL\Schema\Definition\Types\Scalar\IDType;
use Efabrica\GraphQL\Schema\Definition\Types\Scalar\IntType;
use Efabrica\GraphQL\Schema\Definition\Types\Scalar\StringType;
$userResolver = new class implements ResolverInterface {
public function __invoke($parentValue, array $args, ResolveInfo $resolveInfo): array
{
$limit = $args['pagination']['limit'] ?? null;
$offset = $args['pagination']['offset'] ?? 0;
$users = [
[
'id' => 1,
'name' => 'John Doe',
'email' => '[email protected]',
],
[
'id' => 2,
'name' => 'Jane Dane',
'email' => '[email protected]',
],
[
'id' => 3,
'name' => 'Moe Lester',
'email' => '[email protected]',
],
];
return array_slice($users, $offset, $limit);
}
};
$userObjectType = (new ObjectType('User'))
->setFields([
new Field('id', new IDType()),
new Field('name', new StringType()),
new Field('email', new StringType()),
]);
$paginationArgument = new FieldArgument(
'pagination',
(new InputObjectType('pagination_argument'))
->setFields([
(new InputObjectField('limit', new IntType()))
->setNullable(),
(new InputObjectField('offset', new IntType()))
->setNullable(),
])
);
$schema = (new Schema())
->setQuery(
(new ObjectType('Query'))
->setFields([
(new Field('Users', $userObjectType))
->setMulti()
->setArguments([
$paginationArgument,
])
->setResolver($userResolver),
])
);
use Efabrica\GraphQL\Drivers\WebonyxDriver;
use Efabrica\GraphQL\GraphQL;
use Efabrica\GraphQL\Schema\Loaders\DefinitionSchemaLoader;
$schemaLoader = new DefinitionSchemaLoader($schema);
$driver = new WebonyxDriver($schemaLoader);
$graphql = new GraphQL($driver);