Here all supported built‐in Scalars:
Here a simple example of how to add a custom Scalar:
DateTime:
type: custom-scalar
config:
serialize: ["AppBundle\\DateTimeType", "serialize"]
parseValue: ["AppBundle\\DateTimeType", "parseValue"]
parseLiteral: ["AppBundle\\DateTimeType", "parseLiteral"]
<?php
namespace AppBundle;
use GraphQL\Language\AST\Node;
class DateTimeType
{
/**
* [@param](https://github.com/param) \DateTimeInterface $value
*
* [@return](https://github.com/return) string
*/
public static function serialize(\DateTimeInterface $value)
{
return $value->format('Y-m-d H:i:s');
}
/**
* [@param](https://github.com/param) mixed $value
*
* [@return](https://github.com/return) \DateTimeInterface
*/
public static function parseValue($value)
{
return new \DateTimeImmutable($value);
}
/**
* [@param](https://github.com/param) Node $valueNode
*
* [@return](https://github.com/return) \DateTimeInterface
*/
public static function parseLiteral(Node $valueNode)
{
return new \DateTimeImmutable($valueNode->value);
}
}
If you prefer reusing a scalar type
MyEmail:
type: custom-scalar
config:
scalarType: '@=newObject("App\\Type\\EmailType")'
You can create your custom-scalar type using the GraphQLType annotation with only one class. For example:
<?php
namespace AppBundle;
use Overblog\GraphQLBundle\Annotation as GQL;
/**
* Class DatetimeType
*
* [@GQL](https://github.com/GQL)\Scalar(name="DateTime")
*/
class DatetimeType
{
/**
* [@param](https://github.com/param) \DateTime $value
*
* [@return](https://github.com/return) string
*/
public static function serialize(\DateTime $value)
{
return $value->format('Y-m-d H:i:s');
}
/**
* [@param](https://github.com/param) mixed $value
*
* [@return](https://github.com/return) mixed
*/
public static function parseValue($value)
{
return new \DateTime($value);
}
/**
* [@param](https://github.com/param) Node $valueNode
*
* [@return](https://github.com/return) string
*/
public static function parseLiteral($valueNode)
{
return new \DateTime($valueNode->value);
}
}
How can I help you explore Laravel packages today?