ContextAwarePluginDefinitionTrait.php

Same filename and directory in other branches
  1. 8.9.x core/lib/Drupal/Component/Plugin/Definition/ContextAwarePluginDefinitionTrait.php
  2. 10 core/lib/Drupal/Component/Plugin/Definition/ContextAwarePluginDefinitionTrait.php
  3. 11.x core/lib/Drupal/Component/Plugin/Definition/ContextAwarePluginDefinitionTrait.php

Namespace

Drupal\Component\Plugin\Definition

File

core/lib/Drupal/Component/Plugin/Definition/ContextAwarePluginDefinitionTrait.php

View source
<?php

namespace Drupal\Component\Plugin\Definition;

use Drupal\Component\Plugin\Context\ContextDefinitionInterface;
use Drupal\Component\Plugin\Exception\ContextException;

/**
 * Provides a trait for context-aware object-based plugin definitions.
 */
trait ContextAwarePluginDefinitionTrait {
    
    /**
     * The context definitions for this plugin definition.
     *
     * @var \Drupal\Component\Plugin\Context\ContextDefinitionInterface[]
     */
    protected $contextDefinitions = [];
    
    /**
     * Implements \Drupal\Component\Plugin\Definition\ContextAwarePluginDefinitionInterface::hasContextDefinition().
     */
    public function hasContextDefinition($name) {
        return array_key_exists($name, $this->contextDefinitions);
    }
    
    /**
     * Implements \Drupal\Component\Plugin\Definition\ContextAwarePluginDefinitionInterface::getContextDefinitions().
     */
    public function getContextDefinitions() {
        return $this->contextDefinitions;
    }
    
    /**
     * Implements \Drupal\Component\Plugin\Definition\ContextAwarePluginDefinitionInterface::getContextDefinition().
     */
    public function getContextDefinition($name) {
        if ($this->hasContextDefinition($name)) {
            return $this->contextDefinitions[$name];
        }
        throw new ContextException($this->id() . " does not define a '{$name}' context");
    }
    
    /**
     * Implements \Drupal\Component\Plugin\Definition\ContextAwarePluginDefinitionInterface::addContextDefinition().
     */
    public function addContextDefinition($name, ContextDefinitionInterface $definition) {
        $this->contextDefinitions[$name] = $definition;
        return $this;
    }
    
    /**
     * Implements \Drupal\Component\Plugin\Definition\ContextAwarePluginDefinitionInterface::removeContextDefinition().
     */
    public function removeContextDefinition($name) {
        unset($this->contextDefinitions[$name]);
        return $this;
    }

}

Traits

Title Deprecated Summary
ContextAwarePluginDefinitionTrait Provides a trait for context-aware object-based plugin definitions.

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