You are here

class DefaultSingleLazyPluginCollection in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/lib/Drupal/Core/Plugin/DefaultSingleLazyPluginCollection.php \Drupal\Core\Plugin\DefaultSingleLazyPluginCollection

Provides a default plugin collection for a plugin type.

A plugin collection usually stores multiple plugins, and is used to lazily instantiate them. When only one plugin is needed, it is still best practice to encapsulate all of the instantiation logic in a plugin collection. This class can be used directly, or subclassed to add further exception handling in self::initializePlugin().

Hierarchy

Expanded class hierarchy of DefaultSingleLazyPluginCollection

4 files declare their use of DefaultSingleLazyPluginCollection
ActionPluginCollection.php in core/lib/Drupal/Core/Action/ActionPluginCollection.php
Contains \Drupal\Core\Action\ActionPluginCollection.
BlockPluginCollection.php in core/modules/block/src/BlockPluginCollection.php
Contains \Drupal\block\BlockPluginCollection.
DefaultSingleLazyPluginCollectionTest.php in core/tests/Drupal/Tests/Core/Plugin/DefaultSingleLazyPluginCollectionTest.php
Contains \Drupal\Tests\Core\Plugin\DefaultSingleLazyPluginCollectionTest.
SearchPluginCollection.php in core/modules/search/src/Plugin/SearchPluginCollection.php
Contains \Drupal\search\Plugin\SearchPluginCollection.

File

core/lib/Drupal/Core/Plugin/DefaultSingleLazyPluginCollection.php, line 24
Contains \Drupal\Core\Plugin\DefaultSingleLazyPluginCollection.

Namespace

Drupal\Core\Plugin
View source
class DefaultSingleLazyPluginCollection extends LazyPluginCollection {
  use DependencySerializationTrait;

  /**
   * The manager used to instantiate the plugins.
   *
   * @var \Drupal\Component\Plugin\PluginManagerInterface
   */
  protected $manager;

  /**
   * An array of configuration to instantiate the plugin with.
   *
   * @var array
   */
  protected $configuration;

  /**
   * The instance ID used for this plugin collection.
   *
   * @var string
   */
  protected $instanceId;

  /**
   * Constructs a new DefaultSingleLazyPluginCollection object.
   *
   * @param \Drupal\Component\Plugin\PluginManagerInterface $manager
   *   The manager to be used for instantiating plugins.
   * @param string $instance_id
   *   The ID of the plugin instance.
   * @param array $configuration
   *   An array of configuration.
   */
  public function __construct(PluginManagerInterface $manager, $instance_id, array $configuration) {
    $this->manager = $manager;
    $this->instanceId = $instance_id;

    // This is still needed by the parent LazyPluginCollection class.
    $this->instanceIDs = array(
      $instance_id => $instance_id,
    );
    $this->configuration = $configuration;
  }

  /**
   * {@inheritdoc}
   */
  protected function initializePlugin($instance_id) {
    $this
      ->set($instance_id, $this->manager
      ->createInstance($instance_id, $this->configuration));
  }

  /**
   * {@inheritdoc}
   */
  public function getConfiguration() {
    $plugin = $this
      ->get($this->instanceId);
    if ($plugin instanceof ConfigurablePluginInterface) {
      return $plugin
        ->getConfiguration();
    }
    else {
      return $this->configuration;
    }
  }

  /**
   * {@inheritdoc}
   */
  public function setConfiguration($configuration) {
    $plugin = $this
      ->get($this->instanceId);
    if ($plugin instanceof ConfigurablePluginInterface) {
      $plugin
        ->setConfiguration($configuration);
    }
    $this->configuration = $configuration;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function addInstanceId($id, $configuration = NULL) {
    parent::addInstanceId($id, $configuration);
    if ($configuration !== NULL) {
      $this
        ->setConfiguration($configuration);
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DefaultSingleLazyPluginCollection::$configuration protected property An array of configuration to instantiate the plugin with.
DefaultSingleLazyPluginCollection::$instanceId protected property The instance ID used for this plugin collection.
DefaultSingleLazyPluginCollection::$manager protected property The manager used to instantiate the plugins.
DefaultSingleLazyPluginCollection::addInstanceId public function Adds an instance ID to the available instance IDs. Overrides LazyPluginCollection::addInstanceId
DefaultSingleLazyPluginCollection::getConfiguration public function Gets the current configuration of all plugins in this collection. Overrides LazyPluginCollection::getConfiguration
DefaultSingleLazyPluginCollection::initializePlugin protected function Initializes and stores a plugin. Overrides LazyPluginCollection::initializePlugin 2
DefaultSingleLazyPluginCollection::setConfiguration public function Sets the configuration for all plugins in this collection. Overrides LazyPluginCollection::setConfiguration
DefaultSingleLazyPluginCollection::__construct public function Constructs a new DefaultSingleLazyPluginCollection object. 2
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
LazyPluginCollection::$instanceIDs protected property Stores the IDs of all potential plugin instances.
LazyPluginCollection::$pluginInstances protected property Stores all instantiated plugins.
LazyPluginCollection::clear public function Clears all instantiated plugins. 1
LazyPluginCollection::count public function
LazyPluginCollection::get public function Gets a plugin instance, initializing it if necessary. 8
LazyPluginCollection::getInstanceIds public function Gets all instance IDs.
LazyPluginCollection::getIterator public function
LazyPluginCollection::has public function Determines if a plugin instance exists.
LazyPluginCollection::remove public function Removes an initialized plugin. 1
LazyPluginCollection::removeInstanceId public function Removes an instance ID. 1
LazyPluginCollection::set public function Stores an initialized plugin.