@@ 9-67 (lines=59) @@ | ||
6 | use Drupal\Core\Extension\ModuleHandlerInterface; |
|
7 | use Drupal\Core\Plugin\DefaultPluginManager; |
|
8 | ||
9 | class FieldPluginManager extends DefaultPluginManager { |
|
10 | ||
11 | /** |
|
12 | * Static cache of plugin instances. |
|
13 | * |
|
14 | * @var \Drupal\graphql\Plugin\FieldPluginInterface[] |
|
15 | */ |
|
16 | protected $instances; |
|
17 | ||
18 | /** |
|
19 | * FieldPluginManager constructor. |
|
20 | * |
|
21 | * @param bool|string $pluginSubdirectory |
|
22 | * The plugin's subdirectory. |
|
23 | * @param \Traversable $namespaces |
|
24 | * An object that implements \Traversable which contains the root paths |
|
25 | * keyed by the corresponding namespace to look for plugin implementations. |
|
26 | * @param \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler |
|
27 | * The module handler. |
|
28 | * @param \Drupal\Core\Cache\CacheBackendInterface $cacheBackend |
|
29 | * The cache backend. |
|
30 | * @param string|null $pluginInterface |
|
31 | * The interface each plugin should implement. |
|
32 | * @param string $pluginAnnotationName |
|
33 | * The name of the annotation that contains the plugin definition. |
|
34 | */ |
|
35 | public function __construct( |
|
36 | $pluginSubdirectory, |
|
37 | \Traversable $namespaces, |
|
38 | ModuleHandlerInterface $moduleHandler, |
|
39 | CacheBackendInterface $cacheBackend, |
|
40 | $pluginInterface, |
|
41 | $pluginAnnotationName |
|
42 | ) { |
|
43 | parent::__construct( |
|
44 | $pluginSubdirectory, |
|
45 | $namespaces, |
|
46 | $moduleHandler, |
|
47 | $pluginInterface, |
|
48 | $pluginAnnotationName |
|
49 | ); |
|
50 | ||
51 | $this->alterInfo('graphql_fields'); |
|
52 | $this->useCaches(TRUE); |
|
53 | $this->setCacheBackend($cacheBackend, 'fields', ['graphql', 'graphql:fields']); |
|
54 | } |
|
55 | ||
56 | /** |
|
57 | * {@inheritdoc} |
|
58 | */ |
|
59 | public function getInstance(array $options) { |
|
60 | if (!isset($this->instances[$options['id']])) { |
|
61 | $this->instances[$options['id']] = $this->createInstance($options['id']); |
|
62 | } |
|
63 | ||
64 | return $this->instances[$options['id']]; |
|
65 | } |
|
66 | ||
67 | } |
|
68 |
@@ 9-67 (lines=59) @@ | ||
6 | use Drupal\Core\Extension\ModuleHandlerInterface; |
|
7 | use Drupal\Core\Plugin\DefaultPluginManager; |
|
8 | ||
9 | class MutationPluginManager extends DefaultPluginManager { |
|
10 | ||
11 | /** |
|
12 | * Static cache of plugin instances. |
|
13 | * |
|
14 | * @var \Drupal\graphql\Plugin\MutationPluginInterface[] |
|
15 | */ |
|
16 | protected $instances; |
|
17 | ||
18 | /** |
|
19 | * FieldPluginManager constructor. |
|
20 | * |
|
21 | * @param bool|string $pluginSubdirectory |
|
22 | * The plugin's subdirectory. |
|
23 | * @param \Traversable $namespaces |
|
24 | * An object that implements \Traversable which contains the root paths |
|
25 | * keyed by the corresponding namespace to look for plugin implementations. |
|
26 | * @param \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler |
|
27 | * The module handler. |
|
28 | * @param \Drupal\Core\Cache\CacheBackendInterface $cacheBackend |
|
29 | * The cache backend. |
|
30 | * @param string|null $pluginInterface |
|
31 | * The interface each plugin should implement. |
|
32 | * @param string $pluginAnnotationName |
|
33 | * The name of the annotation that contains the plugin definition. |
|
34 | */ |
|
35 | public function __construct( |
|
36 | $pluginSubdirectory, |
|
37 | \Traversable $namespaces, |
|
38 | ModuleHandlerInterface $moduleHandler, |
|
39 | CacheBackendInterface $cacheBackend, |
|
40 | $pluginInterface, |
|
41 | $pluginAnnotationName |
|
42 | ) { |
|
43 | parent::__construct( |
|
44 | $pluginSubdirectory, |
|
45 | $namespaces, |
|
46 | $moduleHandler, |
|
47 | $pluginInterface, |
|
48 | $pluginAnnotationName |
|
49 | ); |
|
50 | ||
51 | $this->alterInfo('graphql_mutations'); |
|
52 | $this->useCaches(TRUE); |
|
53 | $this->setCacheBackend($cacheBackend, 'mutations', ['graphql', 'graphql:mutations']); |
|
54 | } |
|
55 | ||
56 | /** |
|
57 | * {@inheritdoc} |
|
58 | */ |
|
59 | public function getInstance(array $options) { |
|
60 | if (!isset($this->instances[$options['id']])) { |
|
61 | $this->instances[$options['id']] = $this->createInstance($options['id']); |
|
62 | } |
|
63 | ||
64 | return $this->instances[$options['id']]; |
|
65 | } |
|
66 | ||
67 | } |
|
68 |