annotate core/lib/Drupal/Component/Plugin/Discovery/DiscoveryTrait.php @ 0:c75dbcec494b

Initial commit from drush-created site
author Chris Cannam
date Thu, 05 Jul 2018 14:24:15 +0000
parents
children 12f9dff5fda9
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Component\Plugin\Discovery;
Chris@0 4
Chris@0 5 use Drupal\Component\Plugin\Exception\PluginNotFoundException;
Chris@0 6
Chris@0 7 /**
Chris@0 8 * @see Drupal\Component\Plugin\Discovery\DiscoveryInterface
Chris@0 9 */
Chris@0 10 trait DiscoveryTrait {
Chris@0 11
Chris@0 12 /**
Chris@0 13 * {@inheritdoc}
Chris@0 14 */
Chris@0 15 abstract public function getDefinitions();
Chris@0 16
Chris@0 17 /**
Chris@0 18 * {@inheritdoc}
Chris@0 19 */
Chris@0 20 public function getDefinition($plugin_id, $exception_on_invalid = TRUE) {
Chris@0 21 $definitions = $this->getDefinitions();
Chris@0 22 return $this->doGetDefinition($definitions, $plugin_id, $exception_on_invalid);
Chris@0 23 }
Chris@0 24
Chris@0 25 /**
Chris@0 26 * Gets a specific plugin definition.
Chris@0 27 *
Chris@0 28 * @param array $definitions
Chris@0 29 * An array of the available plugin definitions.
Chris@0 30 * @param string $plugin_id
Chris@0 31 * A plugin id.
Chris@0 32 * @param bool $exception_on_invalid
Chris@0 33 * If TRUE, an invalid plugin ID will cause an exception to be thrown; if
Chris@0 34 * FALSE, NULL will be returned.
Chris@0 35 *
Chris@0 36 * @return array|null
Chris@0 37 * A plugin definition, or NULL if the plugin ID is invalid and
Chris@0 38 * $exception_on_invalid is TRUE.
Chris@0 39 *
Chris@0 40 * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
Chris@0 41 * Thrown if $plugin_id is invalid and $exception_on_invalid is TRUE.
Chris@0 42 */
Chris@0 43 protected function doGetDefinition(array $definitions, $plugin_id, $exception_on_invalid) {
Chris@0 44 // Avoid using a ternary that would create a copy of the array.
Chris@0 45 if (isset($definitions[$plugin_id])) {
Chris@0 46 return $definitions[$plugin_id];
Chris@0 47 }
Chris@0 48 elseif (!$exception_on_invalid) {
Chris@0 49 return NULL;
Chris@0 50 }
Chris@0 51
Chris@0 52 throw new PluginNotFoundException($plugin_id, sprintf('The "%s" plugin does not exist.', $plugin_id));
Chris@0 53 }
Chris@0 54
Chris@0 55 /**
Chris@0 56 * {@inheritdoc}
Chris@0 57 */
Chris@0 58 public function hasDefinition($plugin_id) {
Chris@0 59 return (bool) $this->getDefinition($plugin_id, FALSE);
Chris@0 60 }
Chris@0 61
Chris@0 62 }