在Laravel中,如果'timezone'配置选项不存在,如何将默认值指定为return?

In Laravel, How to specify a default value to return if the 'timezone' configuration option does not exist?

在 Laravel 4.2 文档中,“访问配置值”部分,they say

You may also specify a default value to return if the configuration option does not exist:

$timezone = Config::get('app.timezone', 'UTC');

但是当我测试它时,我发现如果 app.php 配置文件中不存在 timezone 选项,那么会出现一个错误:Undefined index: timezone,甚至如果 timezone 选项存在但没有设置正确的时区值(例如:UTCEurope/Paris),那么该代码也会引发错误:date_default_timezone_set(): Timezone ID 'wrong_timezone_value_here' is invalid

那么,timezone 配置选项有什么问题?! Laravel 中是否还有任何其他配置选项的行为类似于 timezone 选项?!

Laravel 4.x没有使用普通的Config代码设置默认时区,而是直接调用数组。您可以在

中看到此代码

vendor/Laravel/Framework/src/Illuminate/Foundation/start.php

$config = $app['config']['app'];

date_default_timezone_set($config['timezone']);

所以任何值都需要直接在配置中设置,并且项目必须存在。此外,它不能在运行时直接更改,或者您可以更改值但它不会调用 date_default_timezone_set - 您需要自己做。