3 namespace Drupal\Component\Plugin\Discovery;
6 * A decorator that allows manual registration of undiscoverable definitions.
8 class StaticDiscoveryDecorator extends StaticDiscovery {
11 * The Discovery object being decorated.
13 * @var \Drupal\Component\Plugin\Discovery\DiscoveryInterface
18 * A callback or closure used for registering additional definitions.
22 protected $registerDefinitions;
25 * Constructs a \Drupal\Component\Plugin\Discovery\StaticDiscoveryDecorator object.
27 * @param \Drupal\Component\Plugin\Discovery\DiscoveryInterface $decorated
28 * The discovery object that is being decorated.
29 * @param \Callable $registerDefinitions
30 * (optional) A callback or closure used for registering additional
33 public function __construct(DiscoveryInterface $decorated, $registerDefinitions = NULL) {
34 $this->decorated = $decorated;
35 $this->registerDefinitions = $registerDefinitions;
41 public function getDefinition($base_plugin_id, $exception_on_invalid = TRUE) {
42 if (isset($this->registerDefinitions)) {
43 call_user_func($this->registerDefinitions);
45 $this->definitions += $this->decorated->getDefinitions();
46 return parent::getDefinition($base_plugin_id, $exception_on_invalid);
52 public function getDefinitions() {
53 if (isset($this->registerDefinitions)) {
54 call_user_func($this->registerDefinitions);
56 $this->definitions += $this->decorated->getDefinitions();
57 return parent::getDefinitions();
61 * Passes through all unknown calls onto the decorated object
63 public function __call($method, $args) {
64 return call_user_func_array([$this->decorated, $method], $args);