Issue #1889826 by tim.plunkett: DefaultFactory::getPluginClass() is very useful and should be public and static.
parent
4c19bdcaa7
commit
248284df26
|
|
@ -41,7 +41,7 @@ class DefaultFactory implements FactoryInterface {
|
||||||
* Implements Drupal\Component\Plugin\Factory\FactoryInterface::createInstance().
|
* Implements Drupal\Component\Plugin\Factory\FactoryInterface::createInstance().
|
||||||
*/
|
*/
|
||||||
public function createInstance($plugin_id, array $configuration) {
|
public function createInstance($plugin_id, array $configuration) {
|
||||||
$plugin_class = $this->getPluginClass($plugin_id);
|
$plugin_class = static::getPluginClass($plugin_id, $this->discovery);
|
||||||
return new $plugin_class($configuration, $plugin_id, $this->discovery);
|
return new $plugin_class($configuration, $plugin_id, $this->discovery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -50,12 +50,14 @@ class DefaultFactory implements FactoryInterface {
|
||||||
*
|
*
|
||||||
* @param array $plugin_id
|
* @param array $plugin_id
|
||||||
* The id of a plugin.
|
* The id of a plugin.
|
||||||
|
* @param \Drupal\Component\Plugin\Discovery\DiscoveryInterface $discovery
|
||||||
|
* The discovery object.
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
* The appropriate class name.
|
* The appropriate class name.
|
||||||
*/
|
*/
|
||||||
protected function getPluginClass($plugin_id) {
|
public static function getPluginClass($plugin_id, DiscoveryInterface $discovery) {
|
||||||
$plugin_definition = $this->discovery->getDefinition($plugin_id);
|
$plugin_definition = $discovery->getDefinition($plugin_id);
|
||||||
if (empty($plugin_definition['class'])) {
|
if (empty($plugin_definition['class'])) {
|
||||||
throw new PluginException(sprintf('The plugin (%s) did not specify an instance class.', $plugin_id));
|
throw new PluginException(sprintf('The plugin (%s) did not specify an instance class.', $plugin_id));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ class ReflectionFactory extends DefaultFactory {
|
||||||
* Implements Drupal\Component\Plugin\Factory\FactoryInterface::createInstance().
|
* Implements Drupal\Component\Plugin\Factory\FactoryInterface::createInstance().
|
||||||
*/
|
*/
|
||||||
public function createInstance($plugin_id, array $configuration) {
|
public function createInstance($plugin_id, array $configuration) {
|
||||||
$plugin_class = $this->getPluginClass($plugin_id);
|
$plugin_class = static::getPluginClass($plugin_id, $this->discovery);
|
||||||
|
|
||||||
// Lets figure out of there's a constructor for this class and pull
|
// Lets figure out of there's a constructor for this class and pull
|
||||||
// arguments from the $options array if so to populate it.
|
// arguments from the $options array if so to populate it.
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ class FormatterFactory extends DefaultFactory {
|
||||||
* Overrides Drupal\Component\Plugin\Factory\DefaultFactory::createInstance().
|
* Overrides Drupal\Component\Plugin\Factory\DefaultFactory::createInstance().
|
||||||
*/
|
*/
|
||||||
public function createInstance($plugin_id, array $configuration) {
|
public function createInstance($plugin_id, array $configuration) {
|
||||||
$plugin_class = $this->getPluginClass($plugin_id);
|
$plugin_class = static::getPluginClass($plugin_id, $this->discovery);
|
||||||
return new $plugin_class($plugin_id, $this->discovery, $configuration['instance'], $configuration['settings'], $configuration['label'], $configuration['view_mode']);
|
return new $plugin_class($plugin_id, $this->discovery, $configuration['instance'], $configuration['settings'], $configuration['label'], $configuration['view_mode']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ class WidgetFactory extends DefaultFactory {
|
||||||
* Overrides Drupal\Component\Plugin\Factory\DefaultFactory::createInstance().
|
* Overrides Drupal\Component\Plugin\Factory\DefaultFactory::createInstance().
|
||||||
*/
|
*/
|
||||||
public function createInstance($plugin_id, array $configuration) {
|
public function createInstance($plugin_id, array $configuration) {
|
||||||
$plugin_class = $this->getPluginClass($plugin_id);
|
$plugin_class = static::getPluginClass($plugin_id, $this->discovery);
|
||||||
return new $plugin_class($plugin_id, $this->discovery, $configuration['instance'], $configuration['settings'], $configuration['weight']);
|
return new $plugin_class($plugin_id, $this->discovery, $configuration['instance'], $configuration['settings'], $configuration['weight']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue