public function FeedsAnnotationFactory::createInstance in Feeds 8.3
Creates a pre-configured instance of a plugin.
Parameters
string $plugin_id: The ID of the plugin being instantiated.
array $configuration: An array of configuration relevant to the plugin instance.
Return value
object A fully configured plugin instance.
Throws
\Drupal\Component\Plugin\Exception\PluginException If the instance cannot be created, such as if the ID is invalid.
Overrides ContainerFactory::createInstance
File
- src/
Plugin/ Type/ FeedsAnnotationFactory.php, line 17
Class
- FeedsAnnotationFactory
- Plugin factory which uses the plugin definition to find arguments.
Namespace
Drupal\feeds\Plugin\TypeCode
public function createInstance($plugin_id, array $configuration = []) {
$definition = $this->discovery
->getDefinition($plugin_id);
if (empty($definition['arguments'])) {
return parent::createInstance($plugin_id, $configuration);
}
@trigger_error('FeedsAnnotationFactory is deprecated in Feeds 8.x-3.0-alpha6 and will be removed before Feeds 8.x-3.0. Implement \\Drupal\\Core\\Plugin\\ContainerFactoryPluginInterface instead.', E_USER_DEPRECATED);
// Find arguments from the annotation.
$arguments = [
$configuration,
$plugin_id,
$definition,
];
foreach ($definition['arguments'] as $argument) {
if (substr($argument, 0, 1) === '@') {
$arguments[] = \Drupal::service(substr($argument, 1));
}
elseif (substr($argument, 0, 1) === '%' && substr($argument, -1) === '%') {
$arguments[] = \Drupal::getContainer()
->getParameter(substr($argument, 1, -1));
}
else {
$arguments[] = $argument;
}
}
$ref_class = new \ReflectionClass(static::getPluginClass($plugin_id, $definition, $this->interface));
return $ref_class
->newInstanceArgs($arguments);
}