You are here

public static function SingletonPluginBase::create in ThemeKey 8

Creates an instance of the plugin.

Parameters

\Symfony\Component\DependencyInjection\ContainerInterface $container: The container to pull out services used in the plugin.

array $configuration: A configuration array containing information about the plugin instance.

string $plugin_id: The plugin ID for the plugin instance.

mixed $plugin_definition: The plugin implementation definition.

Return value

static Returns an instance of this plugin.

Overrides ContainerFactoryPluginInterface::create

File

src/Plugin/SingletonPluginBase.php, line 23
Provides Drupal\themekey\PropertyBase.

Class

SingletonPluginBase

Namespace

Drupal\themekey\Plugin

Code

public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
  if (!isset(static::$instances[$plugin_id])) {
    $interfaces = class_implements($plugin_definition['class']);
    foreach ($interfaces as $interface) {
      if (is_subclass_of($interface, '\\Drupal\\themekey\\Plugin\\SingletonPluginInspectionInterface')) {
        $plugin_class = DefaultFactory::getPluginClass($plugin_id, $plugin_definition, $interface);
        static::$instances[$plugin_id] = new $plugin_class($configuration, $plugin_id, $plugin_definition);
        break;
      }
    }
  }
  if (!isset(static::$instances[$plugin_id])) {

    // TODO
    throw new Exception();
  }
  return static::$instances[$plugin_id];
}