1. Go to this page and download the library: Download t3n/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/ */
t3n / graphql example snippets
namespace Your\Package\GraphQL\Resolver;
use Neos\Flow\Annotations as Flow;
use t3n\GraphQL\ResolverInterface;
class QueryResolver implements ResolverInterface
{
protected $someServiceToFetchProducts;
public function products($_, $variables): array
{
// return an array with products
return $this->someServiceToFetchProducts->findAll();
}
public function product($_, $variables): ?Product
{
$id = $variables['id'];
return $this->someServiceToFetchProducts->getProductById($id);
}
}
namespace Your\Package\GraphQL\Resolver\Type;
use Neos\Flow\Annotations as Flow;
use t3n\GraphQL\ResolverInterface;
class ProductResolver implements ResolverInterface
{
public function name(Product $product): array
{
// this is just an overload example
return $product->getName();
}
}
method($source, $args, $context, $info)
namespace Your\Package\GraphQL\Resolver\Type;
use t3n\GraphQL\ResolverInterface;
class PersonResolver implements ResolverInterface
{
public function __resolveType($source): ?string
{
if ($source instanceof Customer) {
return 'Customer';
} elseif ($source instanceof Supplier) {
return 'Supplier';
}
return null;
}
}
public function status(Customer $customer): string
{
return $customer->isActive() ? 'ACTIVE' : 'INACTIVE';
}
namespace Your\Package\GraphQL\Resolver\Type;
use DateTime;
use GraphQL\Language\AST\IntValueNode;
use GraphQL\Language\AST\Node;
use t3n\GraphQL\ResolverInterface;
class DateTimeResolver implements ResolverInterface
{
public function serialize(DateTime $value): ?int
{
return $value->getTimestamp();
}
public function parseLiteral(Node $ast): ?DateTime
{
if ($ast instanceof IntValueNode) {
$dateTime = new DateTime();
$dateTime->setTimestamp((int)$ast->value);
return $dateTime;
}
return null;
}
public function parseValue(int $value): DateTime
{
$dateTime = new DateTime();
$dateTime->setTimestamp($value);
return $dateTime;
}
}
declare(strict_types=1);
namespace Your\Package\GraphQL;
use Neos\Flow\Annotations as Flow;
use Your\Package\Shop\Basket;
use t3n\GraphQL\Context as BaseContext;
class ShoppingBasketContext extends BaseContext
{
/**
* @Flow\Inject
*
* @var Basket
*/
protected $basket;
public function getBasket()
{
return $this->basket;
}
}
namespace Your\Package\GraphQL\Resolver;
use Neos\Flow\Annotations as Flow;
use t3n\GraphQL\ResolverInterface;
class QueryResolver implements ResolverInterface
{
protected $someServiceToFetchProducts;
// Note the resolver method signature. The context is available as third param
public function basket($_, $variables, ShoppingBasketContext $context): array
{
return $context->getBasket();
}
}
namespace Your\Package\GraphQL\Resolver;
use Neos\Flow\Annotations as Flow;
use t3n\GraphQL\ResolverInterface;
class MutationResolver implements ResolverInterface
{
protected $someServiceToFetchProducts;
public function addItem($_, $variables, ShoppingBasketContext $context): Basket
{
// construct your item with the input (simplified, don't forget validation etc.)
$item = new BasketItem();
$item->setName($variables['name']);
$item->setPrice($variables['price']);
$basket = $context->getBasket();
$basket->addItem($item);
return $basket;
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.