在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
选项存在但没有设置正确的时区值(例如:UTC
或 Europe/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
- 您需要自己做。
在 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
选项存在但没有设置正确的时区值(例如:UTC
或 Europe/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
- 您需要自己做。