3 namespace Drupal\Component\Plugin;
6 * Base class for plugins wishing to support metadata inspection.
8 abstract class PluginBase implements PluginInspectionInterface, DerivativeInspectionInterface {
11 * A string which is used to separate base plugin IDs from the derivative ID.
13 const DERIVATIVE_SEPARATOR = ':';
23 * The plugin implementation definition.
27 protected $pluginDefinition;
30 * Configuration information passed into the plugin.
32 * When using an interface like
33 * \Drupal\Component\Plugin\ConfigurablePluginInterface, this is where the
34 * configuration should be stored.
36 * Plugin configuration is optional, so plugin implementations must provide
37 * their own setters and getters.
41 protected $configuration;
44 * Constructs a Drupal\Component\Plugin\PluginBase object.
46 * @param array $configuration
47 * A configuration array containing information about the plugin instance.
48 * @param string $plugin_id
49 * The plugin_id for the plugin instance.
50 * @param mixed $plugin_definition
51 * The plugin implementation definition.
53 public function __construct(array $configuration, $plugin_id, $plugin_definition) {
54 $this->configuration = $configuration;
55 $this->pluginId = $plugin_id;
56 $this->pluginDefinition = $plugin_definition;
62 public function getPluginId() {
63 return $this->pluginId;
69 public function getBaseId() {
70 $plugin_id = $this->getPluginId();
71 if (strpos($plugin_id, static::DERIVATIVE_SEPARATOR)) {
72 list($plugin_id) = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 2);
80 public function getDerivativeId() {
81 $plugin_id = $this->getPluginId();
82 $derivative_id = NULL;
83 if (strpos($plugin_id, static::DERIVATIVE_SEPARATOR)) {
84 list(, $derivative_id) = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 2);
86 return $derivative_id;
92 public function getPluginDefinition() {
93 return $this->pluginDefinition;