Issue #1889826 by tim.plunkett: DefaultFactory::getPluginClass() is very useful and should be public and static.

8.0.x
Dries 2013-01-16 11:02:59 -05:00
parent 4c19bdcaa7
commit 248284df26
4 changed files with 8 additions and 6 deletions

View File

@ -41,7 +41,7 @@ class DefaultFactory implements FactoryInterface {
* Implements Drupal\Component\Plugin\Factory\FactoryInterface::createInstance().
*/
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);
}
@ -50,12 +50,14 @@ class DefaultFactory implements FactoryInterface {
*
* @param array $plugin_id
* The id of a plugin.
* @param \Drupal\Component\Plugin\Discovery\DiscoveryInterface $discovery
* The discovery object.
*
* @return string
* The appropriate class name.
*/
protected function getPluginClass($plugin_id) {
$plugin_definition = $this->discovery->getDefinition($plugin_id);
public static function getPluginClass($plugin_id, DiscoveryInterface $discovery) {
$plugin_definition = $discovery->getDefinition($plugin_id);
if (empty($plugin_definition['class'])) {
throw new PluginException(sprintf('The plugin (%s) did not specify an instance class.', $plugin_id));
}

View File

@ -20,7 +20,7 @@ class ReflectionFactory extends DefaultFactory {
* Implements Drupal\Component\Plugin\Factory\FactoryInterface::createInstance().
*/
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
// arguments from the $options array if so to populate it.

View File

@ -18,7 +18,7 @@ class FormatterFactory extends DefaultFactory {
* Overrides Drupal\Component\Plugin\Factory\DefaultFactory::createInstance().
*/
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']);
}
}

View File

@ -18,7 +18,7 @@ class WidgetFactory extends DefaultFactory {
* Overrides Drupal\Component\Plugin\Factory\DefaultFactory::createInstance().
*/
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']);
}
}