在 Laravel 中,如何指定在“时区”配置选项不存在时要返回的默认值


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

在Laravel 4.2文档的"访问配置值"部分中,他们说:

如果配置选项不存在,您还可以指定要返回的默认值:

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

但是当我测试它时,我发现如果timezone配置文件中不存在该选项app.php则会显示一条错误消息: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 - 您需要自己执行此操作。