function AttributeBridgeDecorator::getDefinitions

Same name and namespace in other branches
  1. 10 core/lib/Drupal/Component/Plugin/Discovery/AttributeBridgeDecorator.php \Drupal\Component\Plugin\Discovery\AttributeBridgeDecorator::getDefinitions()

Overrides DiscoveryTrait::getDefinitions

File

core/lib/Drupal/Component/Plugin/Discovery/AttributeBridgeDecorator.php, line 30

Class

AttributeBridgeDecorator
Ensures that all definitions are run through the attribute process.

Namespace

Drupal\Component\Plugin\Discovery

Code

public function getDefinitions() {
    $definitions = $this->decorated
        ->getDefinitions();
    foreach ($definitions as $id => $definition) {
        // Attribute constructors expect an array of values. If the definition is
        // not an array, it usually means it has been processed already and can be
        // ignored.
        if (is_array($definition)) {
            $class = $definition['class'] ?? NULL;
            $provider = $definition['provider'] ?? NULL;
            unset($definition['class'], $definition['provider']);
            
            /** @var \Drupal\Component\Plugin\Attribute\AttributeInterface $attribute */
            $attribute = new $this->pluginDefinitionAttributeName(...$definition);
            if (isset($class)) {
                $attribute->setClass($class);
            }
            if (isset($provider)) {
                $attribute->setProvider($provider);
            }
            $definitions[$id] = $attribute->get();
        }
    }
    return $definitions;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.