Chris@0: getDefinitions(); Chris@0: return $this->doGetDefinition($definitions, $plugin_id, $exception_on_invalid); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Gets a specific plugin definition. Chris@0: * Chris@0: * @param array $definitions Chris@0: * An array of the available plugin definitions. Chris@0: * @param string $plugin_id Chris@0: * A plugin id. Chris@0: * @param bool $exception_on_invalid Chris@0: * If TRUE, an invalid plugin ID will cause an exception to be thrown; if Chris@0: * FALSE, NULL will be returned. Chris@0: * Chris@0: * @return array|null Chris@0: * A plugin definition, or NULL if the plugin ID is invalid and Chris@0: * $exception_on_invalid is TRUE. Chris@0: * Chris@0: * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException Chris@0: * Thrown if $plugin_id is invalid and $exception_on_invalid is TRUE. Chris@0: */ Chris@0: protected function doGetDefinition(array $definitions, $plugin_id, $exception_on_invalid) { Chris@0: // Avoid using a ternary that would create a copy of the array. Chris@0: if (isset($definitions[$plugin_id])) { Chris@0: return $definitions[$plugin_id]; Chris@0: } Chris@0: elseif (!$exception_on_invalid) { Chris@0: return NULL; Chris@0: } Chris@0: Chris@18: $valid_ids = implode(', ', array_keys($definitions)); Chris@18: throw new PluginNotFoundException($plugin_id, sprintf('The "%s" plugin does not exist. Valid plugin IDs for %s are: %s', $plugin_id, static::class, $valid_ids)); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function hasDefinition($plugin_id) { Chris@0: return (bool) $this->getDefinition($plugin_id, FALSE); Chris@0: } Chris@0: Chris@0: }