Blame | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace Illuminate\Foundation\Bootstrap;use Exception;use Illuminate\Config\Repository;use Illuminate\Contracts\Config\Repository as RepositoryContract;use Illuminate\Contracts\Foundation\Application;use SplFileInfo;use Symfony\Component\Finder\Finder;class LoadConfiguration{/*** Bootstrap the given application.** @param \Illuminate\Contracts\Foundation\Application $app* @return void*/public function bootstrap(Application $app){$items = [];// First we will see if we have a cache configuration file. If we do, we'll load// the configuration items from that file so that it is very quick. Otherwise// we will need to spin through every configuration file and load them all.if (file_exists($cached = $app->getCachedConfigPath())) {$items = require $cached;$loadedFromCache = true;}// Next we will spin through all of the configuration files in the configuration// directory and load each one into the repository. This will make all of the// options available to the developer for use in various parts of this app.$app->instance('config', $config = new Repository($items));if (! isset($loadedFromCache)) {$this->loadConfigurationFiles($app, $config);}// Finally, we will set the application's environment based on the configuration// values that were loaded. We will pass a callback which will be used to get// the environment in a web context where an "--env" switch is not present.$app->detectEnvironment(fn () => $config->get('app.env', 'production'));date_default_timezone_set($config->get('app.timezone', 'UTC'));mb_internal_encoding('UTF-8');}/*** Load the configuration items from all of the files.** @param \Illuminate\Contracts\Foundation\Application $app* @param \Illuminate\Contracts\Config\Repository $repository* @return void** @throws \Exception*/protected function loadConfigurationFiles(Application $app, RepositoryContract $repository){$files = $this->getConfigurationFiles($app);if (! isset($files['app'])) {throw new Exception('Unable to load the "app" configuration file.');}foreach ($files as $key => $path) {$repository->set($key, require $path);}}/*** Get all of the configuration files for the application.** @param \Illuminate\Contracts\Foundation\Application $app* @return array*/protected function getConfigurationFiles(Application $app){$files = [];$configPath = realpath($app->configPath());foreach (Finder::create()->files()->name('*.php')->in($configPath) as $file) {$directory = $this->getNestedDirectory($file, $configPath);$files[$directory.basename($file->getRealPath(), '.php')] = $file->getRealPath();}ksort($files, SORT_NATURAL);return $files;}/*** Get the configuration file nesting path.** @param \SplFileInfo $file* @param string $configPath* @return string*/protected function getNestedDirectory(SplFileInfo $file, $configPath){$directory = $file->getPath();if ($nested = trim(str_replace($configPath, '', $directory), DIRECTORY_SEPARATOR)) {$nested = str_replace(DIRECTORY_SEPARATOR, '.', $nested).'.';}return $nested;}}