Add an EventSubscriberInterface which may also be implemented by plugins
parent
3960edd64e
commit
919a190153
|
@ -12,9 +12,6 @@
|
||||||
|
|
||||||
namespace Composer\EventDispatcher;
|
namespace Composer\EventDispatcher;
|
||||||
|
|
||||||
use Composer\Composer;
|
|
||||||
use Composer\IO\IOInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The base event class
|
* The base event class
|
||||||
*
|
*
|
||||||
|
|
|
@ -170,7 +170,7 @@ class EventDispatcher
|
||||||
$this->listeners[$eventName][$priority][] = $listener;
|
$this->listeners[$eventName][$priority][] = $listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function addSubscriber($subscriber)
|
public function addSubscriber(EventSubscriberInterface $subscriber)
|
||||||
{
|
{
|
||||||
foreach ($subscriber->getSubscribedEvents() as $eventName => $params) {
|
foreach ($subscriber->getSubscribedEvents() as $eventName => $params) {
|
||||||
if (is_string($params)) {
|
if (is_string($params)) {
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Composer.
|
||||||
|
*
|
||||||
|
* (c) Nils Adermann <naderman@naderman.de>
|
||||||
|
* Jordi Boggiano <j.boggiano@seld.be>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\EventDispatcher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An EventSubscriber knows which events it is interested in.
|
||||||
|
*
|
||||||
|
* If an EventSubscriber is added to an EventDispatcher, the manager invokes
|
||||||
|
* {@link getSubscribedEvents} and registers the subscriber as a listener for all
|
||||||
|
* returned events.
|
||||||
|
*
|
||||||
|
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
|
||||||
|
* @author Jonathan Wage <jonwage@gmail.com>
|
||||||
|
* @author Roman Borschel <roman@code-factory.org>
|
||||||
|
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||||
|
*/
|
||||||
|
interface EventSubscriberInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Returns an array of event names this subscriber wants to listen to.
|
||||||
|
*
|
||||||
|
* The array keys are event names and the value can be:
|
||||||
|
*
|
||||||
|
* * The method name to call (priority defaults to 0)
|
||||||
|
* * An array composed of the method name to call and the priority
|
||||||
|
* * An array of arrays composed of the method names to call and respective
|
||||||
|
* priorities, or 0 if unset
|
||||||
|
*
|
||||||
|
* For instance:
|
||||||
|
*
|
||||||
|
* * array('eventName' => 'methodName')
|
||||||
|
* * array('eventName' => array('methodName', $priority))
|
||||||
|
* * array('eventName' => array(array('methodName1', $priority), array('methodName2'))
|
||||||
|
*
|
||||||
|
* @return array The event names to listen to
|
||||||
|
*/
|
||||||
|
public static function getSubscribedEvents();
|
||||||
|
}
|
|
@ -13,6 +13,7 @@
|
||||||
namespace Composer\Plugin;
|
namespace Composer\Plugin;
|
||||||
|
|
||||||
use Composer\Composer;
|
use Composer\Composer;
|
||||||
|
use Composer\EventDispatcher\EventSubscriberInterface;
|
||||||
use Composer\Package\Package;
|
use Composer\Package\Package;
|
||||||
use Composer\IO\IOInterface;
|
use Composer\IO\IOInterface;
|
||||||
use Composer\Package\PackageInterface;
|
use Composer\Package\PackageInterface;
|
||||||
|
@ -65,8 +66,8 @@ class PluginManager
|
||||||
$this->plugins[] = $plugin;
|
$this->plugins[] = $plugin;
|
||||||
$plugin->activate($this->composer);
|
$plugin->activate($this->composer);
|
||||||
|
|
||||||
if ($plugin instanceof \Symfony\Component\EventDispatcher\EventSubscriberInterface) {
|
if ($plugin instanceof EventSubscriberInterface) {
|
||||||
$this->composer->getPluginEventDispatcher()->addSubscriber($plugin);
|
$this->composer->getEventDispatcher()->addSubscriber($plugin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue