Esempio n. 1
0
 /**
  * Adds a plugin, activates it and registers it with the event dispatcher
  *
  * @param PluginInterface $plugin plugin instance
  */
 public function addPlugin(PluginInterface $plugin)
 {
     $this->plugins[] = $plugin;
     $plugin->activate($this->composer, $this->io);
     if ($plugin instanceof EventSubscriberInterface) {
         $this->composer->getEventDispatcher()->addSubscriber($plugin);
     }
 }
Esempio n. 2
0
 /**
  * @param  PluginInterface   $plugin
  * @param  string            $capability
  * @throws \RuntimeException On empty or non-string implementation class name value
  * @return null|string       The fully qualified class of the implementation or null if Plugin is not of Capable type or does not provide it
  */
 protected function getCapabilityImplementationClassName(PluginInterface $plugin, $capability)
 {
     if (!$plugin instanceof Capable) {
         return null;
     }
     $capabilities = (array) $plugin->getCapabilities();
     if (!empty($capabilities[$capability]) && is_string($capabilities[$capability]) && trim($capabilities[$capability])) {
         return trim($capabilities[$capability]);
     }
     if (array_key_exists($capability, $capabilities) && (empty($capabilities[$capability]) || !is_string($capabilities[$capability]) || !trim($capabilities[$capability]))) {
         throw new \UnexpectedValueException('Plugin ' . get_class($plugin) . ' provided invalid capability class name(s), got ' . var_export($capabilities[$capability], 1));
     }
 }