12345678910111213141516171819202122232425262728 |
- <?php
- namespace Drupal\Core\Plugin\Factory;
- use Drupal\Component\Plugin\Factory\DefaultFactory;
- /**
- * Plugin factory which passes a container to a create method.
- */
- class ContainerFactory extends DefaultFactory {
- /**
- * {@inheritdoc}
- */
- public function createInstance($plugin_id, array $configuration = []) {
- $plugin_definition = $this->discovery->getDefinition($plugin_id);
- $plugin_class = static::getPluginClass($plugin_id, $plugin_definition, $this->interface);
- // If the plugin provides a factory method, pass the container to it.
- if (is_subclass_of($plugin_class, 'Drupal\Core\Plugin\ContainerFactoryPluginInterface')) {
- return $plugin_class::create(\Drupal::getContainer(), $configuration, $plugin_id, $plugin_definition);
- }
- // Otherwise, create the plugin directly.
- return new $plugin_class($configuration, $plugin_id, $plugin_definition);
- }
- }
|