EntityToJson::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 4
dl 0
loc 9
rs 9.9666
c 0
b 0
f 0
1
<?php
2
3
namespace Drupal\graphql_json\Plugin\GraphQL\Fields;
4
5
use Drupal\Core\DependencyInjection\DependencySerializationTrait;
6
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
7
use Drupal\graphql\GraphQL\Execution\ResolveContext;
8
use Drupal\graphql\Plugin\GraphQL\Fields\FieldPluginBase;
9
use GraphQL\Type\Definition\ResolveInfo;
10
use Symfony\Component\DependencyInjection\ContainerInterface;
11
use Symfony\Component\Serializer\SerializerInterface;
12
13
/**
14
 * Serialize entities to json.
15
 *
16
 * @GraphQLField(
17
 *   id = "entity_to_json",
18
 *   name = "toJson",
19
 *   type = "JsonObject",
20
 *   parents = {"Entity"},
21
 *   deriver = "\Drupal\graphql_json\Plugin\Deriver\EntityToJsonDeriver"
22
 * )
23
 */
24
class EntityToJson extends FieldPluginBase implements ContainerFactoryPluginInterface {
25
  use DependencySerializationTrait;
26
27
  /**
28
   * The serializer.
29
   *
30
   * @var \Symfony\Component\Serializer\SerializerInterface
31
   */
32
  protected $serializer;
33
34
  /**
35
   * {@inheritdoc}
36
   */
37
  public static function create(
38
    ContainerInterface $container,
39
    array $configuration,
40
    $plugin_id,
41
    $plugin_definition
42
  ) {
43
    return new static(
44
      $configuration,
45
      $plugin_id,
46
      $plugin_definition,
47
      $container->get('serializer')
48
    );
49
  }
50
51
  /**
52
   * {@inheritdoc}
53
   */
54
  public function __construct(
55
    array $configuration,
56
    $pluginId,
57
    $pluginDefinition,
58
    SerializerInterface $serializer
59
  ) {
60
    $this->serializer = $serializer;
61
    parent::__construct($configuration, $pluginId, $pluginDefinition);
62
  }
63
64
  /**
65
   * {@inheritdoc}
66
   */
67
  protected function resolveValues($value, array $args, ResolveContext $context, ResolveInfo $info) {
68
    yield json_decode($this->serializer->serialize($value, 'json'), TRUE);
69
  }
70
71
}
72