protected function PluginDependencyTrait::getPluginDependencies in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Plugin/PluginDependencyTrait.php \Drupal\Core\Plugin\PluginDependencyTrait::getPluginDependencies()
Calculates and returns dependencies of a specific plugin instance.
Dependencies are added for the module that provides the plugin, as well as any dependencies declared by the instance's calculateDependencies() method, if it implements \Drupal\Component\Plugin\DependentPluginInterface.
Parameters
\Drupal\Component\Plugin\PluginInspectionInterface $instance: The plugin instance.
Return value
array An array of dependencies keyed by the type of dependency.
2 calls to PluginDependencyTrait::getPluginDependencies()
- LayoutBuilderEntityViewDisplay::onDependencyRemoval in core/
modules/ layout_builder/ src/ Entity/ LayoutBuilderEntityViewDisplay.php - Informs the entity that entities it depends on will be deleted.
- PluginDependencyTrait::calculatePluginDependencies in core/
lib/ Drupal/ Core/ Plugin/ PluginDependencyTrait.php - Calculates and adds dependencies of a specific plugin instance.
File
- core/
lib/ Drupal/ Core/ Plugin/ PluginDependencyTrait.php, line 33
Class
- PluginDependencyTrait
- Provides a trait for calculating the dependencies of a plugin.
Namespace
Drupal\Core\PluginCode
protected function getPluginDependencies(PluginInspectionInterface $instance) {
$dependencies = [];
$definition = $instance
->getPluginDefinition();
$provider = NULL;
$config_dependencies = [];
if ($definition instanceof PluginDefinitionInterface) {
$provider = $definition
->getProvider();
if ($definition instanceof DependentPluginDefinitionInterface) {
$config_dependencies = $definition
->getConfigDependencies();
}
}
elseif (is_array($definition)) {
$provider = $definition['provider'];
if (isset($definition['config_dependencies'])) {
$config_dependencies = $definition['config_dependencies'];
}
}
// Add the provider as a dependency, taking into account if it's a module or
// a theme.
if ($provider) {
if ($provider === 'core' || $this
->moduleHandler()
->moduleExists($provider)) {
$dependencies['module'][] = $provider;
}
elseif ($this
->themeHandler()
->themeExists($provider)) {
$dependencies['theme'][] = $provider;
}
}
// Add the config dependencies.
if ($config_dependencies) {
$dependencies = NestedArray::mergeDeep($dependencies, $config_dependencies);
}
// If a plugin is dependent, calculate its dependencies.
if ($instance instanceof DependentPluginInterface && ($plugin_dependencies = $instance
->calculateDependencies())) {
$dependencies = NestedArray::mergeDeep($dependencies, $plugin_dependencies);
}
return $dependencies;
}