function Settings::initialize

Same name in other branches
  1. 9 core/lib/Drupal/Core/Site/Settings.php \Drupal\Core\Site\Settings::initialize()
  2. 10 core/lib/Drupal/Core/Site/Settings.php \Drupal\Core\Site\Settings::initialize()
  3. 11.x core/lib/Drupal/Core/Site/Settings.php \Drupal\Core\Site\Settings::initialize()

Bootstraps settings.php and the Settings singleton.

Parameters

string $app_root: The app root.

string $site_path: The current site path.

\Composer\Autoload\ClassLoader $class_loader: The class loader that is used for this request. Passed by reference and exposed to the local scope of settings.php, so as to allow it to be decorated with Symfony's ApcClassLoader, for example.

See also

default.settings.php

17 calls to Settings::initialize()
db-tools.php in core/scripts/db-tools.php
A command line application to import a database generation script.
DrupalKernel::initializeSettings in core/lib/Drupal/Core/DrupalKernel.php
Locate site path and initialize settings singleton.
dump-database-d8-mysql.php in core/scripts/dump-database-d8-mysql.php
A command line application to dump a database to a generation script.
FunctionalTestSetupTrait::initSettings in core/lib/Drupal/Core/Test/FunctionalTestSetupTrait.php
Initialize settings created during install.
FunctionalTestSetupTrait::prepareSettings in core/lib/Drupal/Core/Test/FunctionalTestSetupTrait.php
Prepares site settings and services before installation.

... See full list

File

core/lib/Drupal/Core/Site/Settings.php, line 117

Class

Settings
Read only settings that are initialized with the class.

Namespace

Drupal\Core\Site

Code

public static function initialize($app_root, $site_path, &$class_loader) {
    // Export these settings.php variables to the global namespace.
    global $config_directories, $config;
    $settings = [];
    $config = [];
    $databases = [];
    if (is_readable($app_root . '/' . $site_path . '/settings.php')) {
        require $app_root . '/' . $site_path . '/settings.php';
    }
    // Initialize databases.
    foreach ($databases as $key => $targets) {
        foreach ($targets as $target => $info) {
            Database::addConnectionInfo($key, $target, $info);
            // If the database driver is provided by a module, then its code may
            // need to be instantiated prior to when the module's root namespace
            // is added to the autoloader, because that happens during service
            // container initialization but the container definition is likely in
            // the database. Therefore, allow the connection info to specify an
            // autoload directory for the driver.
            if (isset($info['autoload'])) {
                $class_loader->addPsr4($info['namespace'] . '\\', $info['autoload']);
            }
        }
    }
    // For BC ensure the $config_directories global is set both in the global
    // and settings.
    if (!isset($settings['config_sync_directory']) && !empty($config_directories['sync'])) {
        @trigger_error('$config_directories[\'sync\'] has moved to $settings[\'config_sync_directory\']. See https://www.drupal.org/node/3018145.', E_USER_DEPRECATED);
        $settings['config_sync_directory'] = $config_directories['sync'];
    }
    elseif (isset($settings['config_sync_directory'])) {
        $config_directories['sync'] = $settings['config_sync_directory'];
    }
    // Initialize Settings.
    new Settings($settings);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.