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:
commit
e48b2c07eb
@ -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:
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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 }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user