class DefaultSingleLazyPluginCollection
Same name in other branches
- 9 core/lib/Drupal/Core/Plugin/DefaultSingleLazyPluginCollection.php \Drupal\Core\Plugin\DefaultSingleLazyPluginCollection
- 8.9.x core/lib/Drupal/Core/Plugin/DefaultSingleLazyPluginCollection.php \Drupal\Core\Plugin\DefaultSingleLazyPluginCollection
- 11.x 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
- class \Drupal\Component\Plugin\LazyPluginCollection implements \Drupal\Component\Plugin\IteratorAggregate, \Drupal\Component\Plugin\Countable
- class \Drupal\Core\Plugin\DefaultSingleLazyPluginCollection extends \Drupal\Component\Plugin\LazyPluginCollection uses \Drupal\Core\DependencyInjection\DependencySerializationTrait
Expanded class hierarchy of DefaultSingleLazyPluginCollection
7 files declare their use of DefaultSingleLazyPluginCollection
- ActionPluginCollection.php in core/
lib/ Drupal/ Core/ Action/ ActionPluginCollection.php - BlockPluginCollection.php in core/
modules/ block/ src/ BlockPluginCollection.php - DefaultSingleLazyPluginCollectionTest.php in core/
tests/ Drupal/ Tests/ Core/ Plugin/ DefaultSingleLazyPluginCollectionTest.php - MediaType.php in core/
modules/ media/ src/ Entity/ MediaType.php - RestResourceConfig.php in core/
modules/ rest/ src/ Entity/ RestResourceConfig.php
File
-
core/
lib/ Drupal/ Core/ Plugin/ DefaultSingleLazyPluginCollection.php, line 19
Namespace
Drupal\Core\PluginView 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->addInstanceId($instance_id, $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 ConfigurableInterface) {
return $plugin->getConfiguration();
}
else {
return $this->configuration;
}
}
/**
* {@inheritdoc}
*/
public function setConfiguration($configuration) {
if (!is_array($configuration)) {
@trigger_error('Calling ' . __METHOD__ . '() with a non-array argument is deprecated in drupal:10.3.0 and will fail in drupal:11.0.0. See https://www.drupal.org/node/3406191', E_USER_DEPRECATED);
$configuration = [];
}
$this->configuration = $configuration;
$plugin = $this->get($this->instanceId);
if ($plugin instanceof ConfigurableInterface) {
$plugin->setConfiguration($configuration);
}
return $this;
}
/**
* {@inheritdoc}
*/
public function addInstanceId($id, $configuration = NULL) {
$this->instanceId = $id;
// Reset the list of instance IDs since there can be only one.
$this->instanceIds = [];
parent::addInstanceId($id, $configuration);
if ($configuration !== NULL) {
$this->setConfiguration($configuration);
}
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | 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::$_entityStorages | protected | property | |||
DependencySerializationTrait::$_serviceIds | protected | property | |||
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. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.