diff --git a/phpBB/common.php b/phpBB/common.php index a30b7b989f..901c0bd713 100644 --- a/phpBB/common.php +++ b/phpBB/common.php @@ -21,10 +21,14 @@ if (!defined('IN_PHPBB')) } require($phpbb_root_path . 'includes/startup.' . $phpEx); -require($phpbb_root_path . 'phpbb/di/container_factory.' . $phpEx); +require($phpbb_root_path . 'phpbb/class_loader.' . $phpEx); -$factory = new \phpbb\di\container_factory($phpbb_root_path, $phpEx); -$config_file_data = $factory->load_config_file(); +// Setup class loader first +$phpbb_class_loader = new \phpbb\class_loader('phpbb\\', "{$phpbb_root_path}phpbb/", $phpEx); +$phpbb_class_loader->register(); + +$config_php_handler = new \phpbb\config_php($phpbb_root_path, $phpEx); +$config_file_data = $config_php_handler->load_config_file(); extract($config_file_data); if (!defined('PHPBB_INSTALLED')) @@ -76,8 +80,6 @@ $phpbb_adm_relative_path = (isset($phpbb_adm_relative_path)) ? $phpbb_adm_relati $phpbb_admin_path = (defined('PHPBB_ADMIN_PATH')) ? PHPBB_ADMIN_PATH : $phpbb_root_path . $phpbb_adm_relative_path; // Include files -require($phpbb_root_path . 'phpbb/class_loader.' . $phpEx); - require($phpbb_root_path . 'includes/functions.' . $phpEx); require($phpbb_root_path . 'includes/functions_content.' . $phpEx); include($phpbb_root_path . 'includes/functions_compatibility.' . $phpEx); @@ -88,18 +90,15 @@ require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx); // Set PHP error handler to ours set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler'); -// Setup class loader first -$phpbb_class_loader = new \phpbb\class_loader('phpbb\\', "{$phpbb_root_path}phpbb/", $phpEx); -$phpbb_class_loader->register(); $phpbb_class_loader_ext = new \phpbb\class_loader('\\', "{$phpbb_root_path}ext/", $phpEx); $phpbb_class_loader_ext->register(); phpbb_load_extensions_autoloaders($phpbb_root_path); // Set up container +$factory = new \phpbb\di\container_factory($config_php_handler, $phpbb_root_path, $phpEx); $phpbb_container = $factory->get_container(); - $phpbb_class_loader->set_cache($phpbb_container->get('cache.driver')); $phpbb_class_loader_ext->set_cache($phpbb_container->get('cache.driver')); diff --git a/phpBB/config/services.yml b/phpBB/config/services.yml index 735a49c99b..09dfc2fba2 100644 --- a/phpBB/config/services.yml +++ b/phpBB/config/services.yml @@ -69,6 +69,9 @@ services: - @cache.driver - %tables.config% + config.php: + synthetic: true + config_text: class: phpbb\config\db_text arguments: diff --git a/phpBB/phpbb/config_php.php b/phpBB/phpbb/config_php.php new file mode 100644 index 0000000000..a92950909d --- /dev/null +++ b/phpBB/phpbb/config_php.php @@ -0,0 +1,77 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb; + +class config_php +{ + /** @var string phpBB Root Path */ + protected $phpbb_root_path; + + /** @var string php file extension */ + protected $php_ext; + + /** + * Indicates if the php config file has been loaded. + * + * @var bool + */ + protected $config_loaded = false; + + /** + * The content of the php config file + * + * @var array + */ + protected $config_data = array(); + + /** + * Constructor + * + * @param string $phpbb_root_path Path to the phpbb includes directory. + * @param string $php_ext php file extension + */ + function __construct($phpbb_root_path, $php_ext) + { + $this->phpbb_root_path = $phpbb_root_path; + $this->php_ext = $php_ext; + } + + /** + * Load the config file, store the information and return them + * + * @return bool|array Return the content of the config file or false if the file does not exists. + */ + public function load_config_file() + { + if (!$this->config_loaded) + { + if (file_exists($this->phpbb_root_path . 'config.' . $this->php_ext)) + { + $x7eeee37ce4d5f1ce4d968ed8fdd9bcbb = null; + $x7eeee37ce4d5f1ce4d968ed8fdd9bcbb = get_defined_vars(); + + require($this->phpbb_root_path . 'config.' . $this->php_ext); + $this->config_data = array_diff_key(get_defined_vars(), $x7eeee37ce4d5f1ce4d968ed8fdd9bcbb); + + $this->config_loaded = true; + } + else + { + return false; + } + } + + return $this->config_data; + } +} diff --git a/phpBB/phpbb/di/container_factory.php b/phpBB/phpbb/di/container_factory.php index 50844ba5d0..37fe9f486f 100644 --- a/phpBB/phpbb/di/container_factory.php +++ b/phpBB/phpbb/di/container_factory.php @@ -42,13 +42,6 @@ class container_factory */ protected $installed_exts = null; - /** - * Indicates if the php config file has been loaded. - * - * @var bool - */ - protected $config_loaded = false; - /** * The content of the php config file * @@ -109,11 +102,13 @@ class container_factory /** * Constructor * + * @param \phpbb\config_php $config_php_handler * @param string $phpbb_root_path Path to the phpbb includes directory. * @param string $php_ext php file extension */ - function __construct($phpbb_root_path, $php_ext) + function __construct(\phpbb\config_php $config_php_handler, $phpbb_root_path, $php_ext) { + $this->config_php_handler = $config_php_handler; $this->phpbb_root_path = $phpbb_root_path; $this->php_ext = $php_ext; } @@ -135,9 +130,9 @@ class container_factory { if ($this->config_path === null) { - $config_path = $this->phpbb_root_path . 'config'; + $this->config_path = $this->phpbb_root_path . 'config'; } - $container_extensions = array(new \phpbb\di\extension\core($config_path)); + $container_extensions = array(new \phpbb\di\extension\core($this->config_path)); if ($this->use_extensions) { @@ -147,7 +142,7 @@ class container_factory if ($this->inject_config) { - $this->load_config_file(); + $this->config_data = $this->config_php_handler->load_config_file(); $container_extensions[] = new \phpbb\di\extension\config($this->config_data); } @@ -169,11 +164,7 @@ class container_factory } } - // Impossible because we have a compiled (and so frozen) container - /*if ($this->inject_config) - { - $this->inject_config(); - }*/ + $this->container->set('config.php', $this->config_php_handler); // Frozen container, we can't modify either the services or the parameters //$this->inject_dbal(); @@ -181,34 +172,6 @@ class container_factory return $this->container; } - /** - * Load the config file, store the information and return them - * - * @return bool|array Return the content of the config file or false if the file does not exists. - */ - public function load_config_file() - { - if (!$this->config_loaded) - { - if (file_exists($this->phpbb_root_path . 'config.' . $this->php_ext)) - { - $x7eeee37ce4d5f1ce4d968ed8fdd9bcbb = null; - $x7eeee37ce4d5f1ce4d968ed8fdd9bcbb = get_defined_vars(); - - require($this->phpbb_root_path . 'config.' . $this->php_ext); - $this->config_data = array_diff_key(get_defined_vars(), $x7eeee37ce4d5f1ce4d968ed8fdd9bcbb); - - $this->config_loaded = true; - } - else - { - return false; - } - } - - return $this->config_data; - } - /** * Set if the extensions should be used. * @@ -308,7 +271,7 @@ class container_factory { if ($this->dbal_connection === null) { - $this->load_config_file(); + $this->config_data = $this->config_php_handler->load_config_file(); $dbal_driver_class = phpbb_convert_30_dbms_to_31($this->config_data['dbms']); $this->dbal_connection = new $dbal_driver_class(); $this->dbal_connection->sql_connect( @@ -378,8 +341,8 @@ class container_factory if ($this->custom_parameters === null) { $this->custom_parameters = array( - 'core.root_path', $this->phpbb_root_path, - 'core.php_ext', $this->php_ext, + 'core.root_path' => $this->phpbb_root_path, + 'core.php_ext' => $this->php_ext, ); }