reviewer-1.2.x-dev/src/Plugin/ReviewPluginManager.php
src/Plugin/ReviewPluginManager.php
<?php
declare(strict_types=1);
namespace Drupal\reviewer\Plugin;
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Plugin\DefaultPluginManager;
use Drupal\reviewer\Attribute\Review;
use Drupal\reviewer\Plugin\reviewer\Review\ReviewPluginInterface;
/**
* Creates review plugins.
*
* @method \Drupal\reviewer\Plugin\reviewer\Review\ReviewPluginInterface createInstance(string $plugin_id, string[] $configuration = [])
* @method string[] getDefinition(string $plugin_id, bool $exception_on_invalid = TRUE)
* @method string[][] getDefinitions()
*/
final class ReviewPluginManager extends DefaultPluginManager implements ReviewManagerInterface {
/**
* @param \Traversable<string> $namespaces
* @param \Drupal\Core\Cache\CacheBackendInterface $cache_backend
* @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
*/
public function __construct(
\Traversable $namespaces,
CacheBackendInterface $cache_backend,
ModuleHandlerInterface $module_handler,
) {
parent::__construct(
'Plugin/reviewer/Review',
$namespaces,
$module_handler,
ReviewPluginInterface::class,
Review::class,
);
$this->setCacheBackend($cache_backend, 'reviewer_review_plugins');
$this->alterInfo('reviewer_review');
}
/**
* {@inheritdoc}
*
* @throws \Drupal\Component\Plugin\Exception\PluginException
*/
public function createAllInstances(): array {
return array_map(
fn(array $definition) => $this->createInstance($definition['id'], $definition),
$this->getDefinitions(),
);
}
}
