[feature/dic] Load services from extensions

PHPBB3-10739
This commit is contained in:
Igor Wiedler 2012-07-21 21:02:55 +02:00
parent 967cc550ed
commit 50bc453aa6
5 changed files with 66 additions and 3 deletions

View file

@ -9,7 +9,6 @@
*/
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Compiler\Compiler;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
@ -102,6 +101,12 @@ $processor->process($phpbb_container);
$phpbb_class_loader = $phpbb_container->get('class_loader');
$phpbb_class_loader_ext = $phpbb_container->get('class_loader.ext');
$ids = array_keys($phpbb_container->findTaggedServiceIds('container.processor'));
foreach ($ids as $id) {
$processor = $phpbb_container->get($id);
$processor->process($phpbb_container);
}
// set up caching
$cache = $phpbb_container->get('cache');

View file

@ -126,3 +126,10 @@ services:
- cron_lock
- @config
- @dbal.conn
processor.config:
class: phpbb_di_processor_ext
arguments:
- @ext.manager
tags:
- { name: container.processor }

View file

@ -8,7 +8,6 @@
*/
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Compiler\Compiler;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
@ -62,6 +61,12 @@ if (isset($_GET['avatar']))
$phpbb_class_loader = $phpbb_container->get('class_loader');
$phpbb_class_loader_ext = $phpbb_container->get('class_loader.ext');
$ids = array_keys($phpbb_container->findTaggedServiceIds('container.processor'));
foreach ($ids as $id) {
$processor = $phpbb_container->get($id);
$processor->process($phpbb_container);
}
// set up caching
$cache = $phpbb_container->get('cache');

View file

@ -0,0 +1,41 @@
<?php
/**
*
* @package phpBB3
* @copyright (c) 2012 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
exit;
}
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
class phpbb_di_processor_ext implements phpbb_di_processor_interface
{
private $extension_manager;
public function __construct($extension_manager)
{
$this->extension_manager = $extension_manager;
}
public function process(ContainerBuilder $container)
{
$enabled_exts = $this->extension_manager->all_enabled();
foreach ($enabled_exts as $name => $path) {
if (file_exists($path . '/config/services.yml')) {
$loader = new YamlFileLoader($container, new FileLocator($path . '/config'));
$loader->load('services.yml');
}
}
}
}

View file

@ -8,7 +8,6 @@
*/
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Compiler\Compiler;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
@ -99,6 +98,12 @@ $phpbb_container->setAlias('cache.driver.install', 'cache.driver');
$phpbb_class_loader = $phpbb_container->get('class_loader');
$phpbb_class_loader_ext = $phpbb_container->get('class_loader.ext');
$ids = array_keys($phpbb_container->findTaggedServiceIds('container.processor'));
foreach ($ids as $id) {
$processor = $phpbb_container->get($id);
$processor->process($phpbb_container);
}
// set up caching
$cache = $phpbb_container->get('cache');