diff --git a/core/lib/Drupal/Component/Plugin/Factory/DefaultFactory.php b/core/lib/Drupal/Component/Plugin/Factory/DefaultFactory.php index 356967b987cf..168d5d7cf343 100644 --- a/core/lib/Drupal/Component/Plugin/Factory/DefaultFactory.php +++ b/core/lib/Drupal/Component/Plugin/Factory/DefaultFactory.php @@ -41,7 +41,7 @@ class DefaultFactory implements FactoryInterface { * Implements Drupal\Component\Plugin\Factory\FactoryInterface::createInstance(). */ public function createInstance($plugin_id, array $configuration) { - $plugin_class = $this->getPluginClass($plugin_id); + $plugin_class = static::getPluginClass($plugin_id, $this->discovery); return new $plugin_class($configuration, $plugin_id, $this->discovery); } @@ -50,12 +50,14 @@ class DefaultFactory implements FactoryInterface { * * @param array $plugin_id * The id of a plugin. + * @param \Drupal\Component\Plugin\Discovery\DiscoveryInterface $discovery + * The discovery object. * * @return string * The appropriate class name. */ - protected function getPluginClass($plugin_id) { - $plugin_definition = $this->discovery->getDefinition($plugin_id); + public static function getPluginClass($plugin_id, DiscoveryInterface $discovery) { + $plugin_definition = $discovery->getDefinition($plugin_id); if (empty($plugin_definition['class'])) { throw new PluginException(sprintf('The plugin (%s) did not specify an instance class.', $plugin_id)); } diff --git a/core/lib/Drupal/Component/Plugin/Factory/ReflectionFactory.php b/core/lib/Drupal/Component/Plugin/Factory/ReflectionFactory.php index a81b868d6fa9..50b38683866b 100644 --- a/core/lib/Drupal/Component/Plugin/Factory/ReflectionFactory.php +++ b/core/lib/Drupal/Component/Plugin/Factory/ReflectionFactory.php @@ -20,7 +20,7 @@ class ReflectionFactory extends DefaultFactory { * Implements Drupal\Component\Plugin\Factory\FactoryInterface::createInstance(). */ public function createInstance($plugin_id, array $configuration) { - $plugin_class = $this->getPluginClass($plugin_id); + $plugin_class = static::getPluginClass($plugin_id, $this->discovery); // Lets figure out of there's a constructor for this class and pull // arguments from the $options array if so to populate it. diff --git a/core/modules/field/lib/Drupal/field/Plugin/Type/Formatter/FormatterFactory.php b/core/modules/field/lib/Drupal/field/Plugin/Type/Formatter/FormatterFactory.php index bb7d06655d35..a0bf0c22ae24 100644 --- a/core/modules/field/lib/Drupal/field/Plugin/Type/Formatter/FormatterFactory.php +++ b/core/modules/field/lib/Drupal/field/Plugin/Type/Formatter/FormatterFactory.php @@ -18,7 +18,7 @@ class FormatterFactory extends DefaultFactory { * Overrides Drupal\Component\Plugin\Factory\DefaultFactory::createInstance(). */ public function createInstance($plugin_id, array $configuration) { - $plugin_class = $this->getPluginClass($plugin_id); + $plugin_class = static::getPluginClass($plugin_id, $this->discovery); return new $plugin_class($plugin_id, $this->discovery, $configuration['instance'], $configuration['settings'], $configuration['label'], $configuration['view_mode']); } } diff --git a/core/modules/field/lib/Drupal/field/Plugin/Type/Widget/WidgetFactory.php b/core/modules/field/lib/Drupal/field/Plugin/Type/Widget/WidgetFactory.php index 851cbea03763..4b6e7dcd4d8f 100644 --- a/core/modules/field/lib/Drupal/field/Plugin/Type/Widget/WidgetFactory.php +++ b/core/modules/field/lib/Drupal/field/Plugin/Type/Widget/WidgetFactory.php @@ -18,7 +18,7 @@ class WidgetFactory extends DefaultFactory { * Overrides Drupal\Component\Plugin\Factory\DefaultFactory::createInstance(). */ public function createInstance($plugin_id, array $configuration) { - $plugin_class = $this->getPluginClass($plugin_id); + $plugin_class = static::getPluginClass($plugin_id, $this->discovery); return new $plugin_class($plugin_id, $this->discovery, $configuration['instance'], $configuration['settings'], $configuration['weight']); } }