mirror of
https://github.com/retailcrm/graphql-php.git
synced 2024-11-24 22:06:04 +03:00
Updated documentation to spec April2016, upgrade instructions
This commit is contained in:
parent
1f71ffc3fc
commit
473bdb62a1
17
README.md
17
README.md
@ -42,6 +42,8 @@ $> curl -sS https://getcomposer.org/installer | php
|
|||||||
$> php composer.phar require webonyx/graphql-php='dev-master'
|
$> php composer.phar require webonyx/graphql-php='dev-master'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If you are upgrading, see [upgrade instructions](UPGRADE.md)
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
PHP >=5.4
|
PHP >=5.4
|
||||||
|
|
||||||
@ -52,7 +54,7 @@ Examples below implement the type system described in this document.
|
|||||||
### Type System
|
### Type System
|
||||||
To start using GraphQL you are expected to implement a Type system.
|
To start using GraphQL you are expected to implement a Type system.
|
||||||
|
|
||||||
GraphQL PHP provides several *kinds* of types to build hierarchical type system:
|
GraphQL PHP provides several *kinds* of types to build a hierarchical type system:
|
||||||
`scalar`, `enum`, `object`, `interface`, `union`, `listOf`, `nonNull`.
|
`scalar`, `enum`, `object`, `interface`, `union`, `listOf`, `nonNull`.
|
||||||
|
|
||||||
#### Internal types
|
#### Internal types
|
||||||
@ -357,7 +359,17 @@ $queryType = new ObjectType([
|
|||||||
// TODOC
|
// TODOC
|
||||||
$mutationType = null;
|
$mutationType = null;
|
||||||
|
|
||||||
$schema = new Schema($queryType, $mutationType);
|
$schema = new Schema([
|
||||||
|
'query' => $queryType,
|
||||||
|
'mutation' => $mutationType,
|
||||||
|
|
||||||
|
// We need to pass the types that implement interfaces in case the types are only created on demand.
|
||||||
|
// This ensures that they are available during query validation phase for interfaces.
|
||||||
|
'types' => [
|
||||||
|
$humanType,
|
||||||
|
$droidType
|
||||||
|
]
|
||||||
|
]);
|
||||||
```
|
```
|
||||||
|
|
||||||
**Notes:**
|
**Notes:**
|
||||||
@ -447,6 +459,7 @@ try {
|
|||||||
$schema,
|
$schema,
|
||||||
$requestString,
|
$requestString,
|
||||||
/* $rootValue */ null,
|
/* $rootValue */ null,
|
||||||
|
/* $context */ null, // A custom context that can be used to pass current User object etc to resolvers.
|
||||||
$variableValues,
|
$variableValues,
|
||||||
$operationName
|
$operationName
|
||||||
);
|
);
|
||||||
|
58
UPGRADE.md
Normal file
58
UPGRADE.md
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
# Upgrade
|
||||||
|
|
||||||
|
## Upgrade v0.6.x > v0.7.x
|
||||||
|
|
||||||
|
There are a few new breaking changes in v0.7.0 that were added to the graphql-js reference implementation
|
||||||
|
with the spec of April2016
|
||||||
|
|
||||||
|
### 1. Context for resolver
|
||||||
|
|
||||||
|
You can now pass a custom context to the `GraphQL::execute` function that is available in all resolvers.
|
||||||
|
This can for example be used to pass the current user etc. The new signature looks like this:
|
||||||
|
|
||||||
|
```php
|
||||||
|
GraphQL::execute(
|
||||||
|
$schema,
|
||||||
|
$query,
|
||||||
|
$rootObject,
|
||||||
|
$context,
|
||||||
|
$variables,
|
||||||
|
$operationName
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
The signature of all resolve methods has changed to the following:
|
||||||
|
|
||||||
|
```php
|
||||||
|
/**
|
||||||
|
* @param mixed $object The parent resolved object
|
||||||
|
* @param array $args Input arguments
|
||||||
|
* @param mixed $context The context object hat was passed to GraphQL::execute
|
||||||
|
* @param ResolveInfo $info ResolveInfo object
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
function resolveMyField($object, array $args, $context, ResolveInfo $info){
|
||||||
|
//...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Schema constructor signature
|
||||||
|
|
||||||
|
The signature of the Schema constructor now accepts an associative config array instead of positional arguments:
|
||||||
|
|
||||||
|
```php
|
||||||
|
$schema = new Schema([
|
||||||
|
'query' => $queryType,
|
||||||
|
'mutation' => $mutationType,
|
||||||
|
'types' => $arrayOfTypesWithInterfaces // See 3.
|
||||||
|
]);
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Types can be directly passed to schema
|
||||||
|
|
||||||
|
In case your implementation creates types on demand, the types might not be available when an interface
|
||||||
|
is queried and query validation will fail. In that case, you need to pass the types that implement the
|
||||||
|
interfaces directly to the schema, so it knows of their existence during query validation.
|
||||||
|
Also see webonyx/graphql-php#38
|
||||||
|
|
||||||
|
If your types are created each time the Schema is created, this can be ignored.
|
Loading…
Reference in New Issue
Block a user