mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-25 11:28:55 +00:00
[feature/dic] Load services from extensions
PHPBB3-10739
This commit is contained in:
parent
967cc550ed
commit
50bc453aa6
5 changed files with 66 additions and 3 deletions
|
@ -9,7 +9,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use Symfony\Component\Config\FileLocator;
|
use Symfony\Component\Config\FileLocator;
|
||||||
use Symfony\Component\DependencyInjection\Compiler\Compiler;
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||||
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
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 = $phpbb_container->get('class_loader');
|
||||||
$phpbb_class_loader_ext = $phpbb_container->get('class_loader.ext');
|
$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
|
// set up caching
|
||||||
$cache = $phpbb_container->get('cache');
|
$cache = $phpbb_container->get('cache');
|
||||||
|
|
||||||
|
|
|
@ -126,3 +126,10 @@ services:
|
||||||
- cron_lock
|
- cron_lock
|
||||||
- @config
|
- @config
|
||||||
- @dbal.conn
|
- @dbal.conn
|
||||||
|
|
||||||
|
processor.config:
|
||||||
|
class: phpbb_di_processor_ext
|
||||||
|
arguments:
|
||||||
|
- @ext.manager
|
||||||
|
tags:
|
||||||
|
- { name: container.processor }
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use Symfony\Component\Config\FileLocator;
|
use Symfony\Component\Config\FileLocator;
|
||||||
use Symfony\Component\DependencyInjection\Compiler\Compiler;
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||||
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
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 = $phpbb_container->get('class_loader');
|
||||||
$phpbb_class_loader_ext = $phpbb_container->get('class_loader.ext');
|
$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
|
// set up caching
|
||||||
$cache = $phpbb_container->get('cache');
|
$cache = $phpbb_container->get('cache');
|
||||||
|
|
||||||
|
|
41
phpBB/includes/di/processor/ext.php
Normal file
41
phpBB/includes/di/processor/ext.php
Normal 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');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,7 +8,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use Symfony\Component\Config\FileLocator;
|
use Symfony\Component\Config\FileLocator;
|
||||||
use Symfony\Component\DependencyInjection\Compiler\Compiler;
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||||
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
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 = $phpbb_container->get('class_loader');
|
||||||
$phpbb_class_loader_ext = $phpbb_container->get('class_loader.ext');
|
$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
|
// set up caching
|
||||||
$cache = $phpbb_container->get('cache');
|
$cache = $phpbb_container->get('cache');
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue