1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-06-01 12:05:37 +02:00

Merge pull request #1871 from nickvergessen/ticket/12016

Ticket/12016 Event listeners should be services
This commit is contained in:
Nils Adermann 2013-11-13 08:45:48 -08:00
commit e48b2c07eb
3 changed files with 25 additions and 13 deletions

View File

@ -141,10 +141,17 @@ services:
class: phpbb\event\extension_subscriber_loader
arguments:
- @dispatcher
- @ext.manager
- @event.listener_collection
calls:
- [load, []]
event.listener_collection:
class: phpbb\di\service_collection
arguments:
- @service_container
tags:
- { name: service_collection, tag: event.listener }
ext.manager:
class: phpbb\extension\manager
arguments:

View File

@ -14,26 +14,22 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class extension_subscriber_loader
{
private $dispatcher;
private $extension_manager;
private $listener_collection;
public function __construct(EventDispatcherInterface $dispatcher, \phpbb\extension\manager $extension_manager)
public function __construct(EventDispatcherInterface $dispatcher, \phpbb\di\service_collection $listener_collection)
{
$this->dispatcher = $dispatcher;
$this->extension_manager = $extension_manager;
$this->listener_collection = $listener_collection;
}
public function load()
{
$finder = $this->extension_manager->get_finder();
$subscriber_classes = $finder
->extension_directory('/event')
->core_path('event/')
->get_classes();
foreach ($subscriber_classes as $class)
if (!empty($this->listener_collection))
{
$subscriber = new $class();
$this->dispatcher->addSubscriber($subscriber);
foreach ($this->listener_collection as $listener)
{
$this->dispatcher->addSubscriber($listener);
}
}
}
}

View File

@ -4,3 +4,12 @@ services:
arguments:
- @controller.helper
- @template
foo_bar.listener.permission:
class: foo\bar\event\permission
tags:
- { name: event.listener }
foo_bar.listener.user_setup:
class: foo\bar\event\user_setup
tags:
- { name: event.listener }