<?php /** * @file * Contains \Drupal\Component\Plugin\PluginBase. */ 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\ConfigurablePluginInterface, 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; } /** * {@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; } }