PluginBase.php

Same filename in this branch
  1. 8.9.x core/modules/views/src/Plugin/views/PluginBase.php
  2. 8.9.x core/lib/Drupal/Core/Plugin/PluginBase.php
Same filename in other branches
  1. 9 core/modules/views/src/Plugin/views/PluginBase.php
  2. 9 core/lib/Drupal/Core/Plugin/PluginBase.php
  3. 9 core/lib/Drupal/Component/Plugin/PluginBase.php
  4. 10 core/modules/views/src/Plugin/views/PluginBase.php
  5. 10 core/lib/Drupal/Core/Plugin/PluginBase.php
  6. 10 core/lib/Drupal/Component/Plugin/PluginBase.php
  7. 11.x core/modules/views/src/Plugin/views/PluginBase.php
  8. 11.x core/lib/Drupal/Core/Plugin/PluginBase.php
  9. 11.x core/lib/Drupal/Component/Plugin/PluginBase.php

Namespace

Drupal\Component\Plugin

File

core/lib/Drupal/Component/Plugin/PluginBase.php

View source
<?php

namespace Drupal\Component\Plugin;


/**
 * Base class for plugins wishing to support metadata inspection.
 */
abstract class PluginBase implements PluginInspectionInterface, DerivativeInspectionInterface {
    
    /**
     * A string which is used to separate base plugin IDs from the derivative ID.
     */
    const DERIVATIVE_SEPARATOR = ':';
    
    /**
     * The plugin_id.
     *
     * @var string
     */
    protected $pluginId;
    
    /**
     * The plugin implementation definition.
     *
     * @var array
     */
    protected $pluginDefinition;
    
    /**
     * Configuration information passed into the plugin.
     *
     * When using an interface like
     * \Drupal\Component\Plugin\ConfigurableInterface, this is where the
     * configuration should be stored.
     *
     * Plugin configuration is optional, so plugin implementations must provide
     * their own setters and getters.
     *
     * @var array
     */
    protected $configuration;
    
    /**
     * Constructs a \Drupal\Component\Plugin\PluginBase object.
     *
     * @param array $configuration
     *   A configuration array containing information about the plugin instance.
     * @param string $plugin_id
     *   The plugin_id for the plugin instance.
     * @param mixed $plugin_definition
     *   The plugin implementation definition.
     */
    public function __construct(array $configuration, $plugin_id, $plugin_definition) {
        $this->configuration = $configuration;
        $this->pluginId = $plugin_id;
        $this->pluginDefinition = $plugin_definition;
        if ($this instanceof ConfigurablePluginInterface && !$this instanceof ConfigurableInterface) {
            @trigger_error('Drupal\\Component\\Plugin\\ConfigurablePluginInterface is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. You should implement ConfigurableInterface and/or DependentPluginInterface directly as needed. If you implement ConfigurableInterface you may choose to implement ConfigurablePluginInterface in Drupal 8 as well for maximum compatibility, however this must be removed prior to Drupal 9. See https://www.drupal.org/node/2946161', E_USER_DEPRECATED);
        }
    }
    
    /**
     * {@inheritdoc}
     */
    public function getPluginId() {
        return $this->pluginId;
    }
    
    /**
     * {@inheritdoc}
     */
    public function getBaseId() {
        $plugin_id = $this->getPluginId();
        if (strpos($plugin_id, static::DERIVATIVE_SEPARATOR)) {
            list($plugin_id) = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 2);
        }
        return $plugin_id;
    }
    
    /**
     * {@inheritdoc}
     */
    public function getDerivativeId() {
        $plugin_id = $this->getPluginId();
        $derivative_id = NULL;
        if (strpos($plugin_id, static::DERIVATIVE_SEPARATOR)) {
            list(, $derivative_id) = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 2);
        }
        return $derivative_id;
    }
    
    /**
     * {@inheritdoc}
     */
    public function getPluginDefinition() {
        return $this->pluginDefinition;
    }
    
    /**
     * Determines if the plugin is configurable.
     *
     * @return bool
     *   A boolean indicating whether the plugin is configurable.
     */
    public function isConfigurable() {
        return $this instanceof ConfigurableInterface || $this instanceof ConfigurablePluginInterface;
    }

}

Classes

Title Deprecated Summary
PluginBase Base class for plugins wishing to support metadata inspection.

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