Laravel 5.3 学习笔记之 配置
1、简介
Laravel的所有配置文件都存放在config目录下,每个配置项都有注释,以保证浏览任意配置文件的配置项都能直观了解该配置项的作用及用法。
2、访问配置值
你可以使用全局辅助函数config在应用的任意位置访问配置值,该配置值可以文件名+“.”+配置项的方式进行访问,当配置项没有被配置的时候返回默认值:
$value=config('app.timezone');
如果要在运行时设置配置值,传递数组参数到config方法即可:
config(['app.timezone'=>'America/Chicago']);
3、环境配置
基于应用运行的环境不同设置不同的配置值能够给我们开发带来极大的方便,比如,我们通常在本地和线上环境配置不同的缓存驱动,这一机制在Laravel中很容易实现。
Laravel使用VanceLucas开发的PHP库DotEnv来实现这一机制,在新安装的Laravel中,根目录下有一个.env.example文件,如果Laravel是通过Composer安装的,那么该文件已经被重命名为.env,否则的话你要自己手动重命名该文件。
获取环境变量配置值
在应用每次接受请求时,.env中列出的所有配置及其值都会被载入到PHP超全局变量$_ENV中,然后你就可以在应用中通过辅助函数env来获取这些配置值。实际上,如果你去查看Laravel的配置文件,就会发现很多地方已经在使用这个辅助函数了:
'debug'=>env('APP_DEBUG',false),
传递到env函数的第二个参数是默认值,如果环境变量没有被配置将会是个该默认值。
不要把.env文件提交到源码控制(svn或git等)中,因为每个使用你的应用的开发者/服务器可能要求不同的环境配置。
如果你是在一个团队中进行开发,你需要将.env.example文件随你的应用一起提交到源码控制中:将一些配置值以占位符的方式放置在.env.example文件中,这样其他开发者就会很清楚运行你的应用需要配置哪些环境变量。
判断当前应用环境
当前应用环境由.env文件中的APP_ENV变量决定,你可以通过App门面的environment方法来访问其值:
$environment=App::environment();
你也可以向environment方法中传递参数来判断当前环境是否匹配给定值,如果需要的话你甚至可以传递多个值。如果当前环境与给定值匹配,该方法返回true:
if(App::environment('local')){ //Theenvironmentislocal } if(App::environment('local','staging')){ //TheenvironmentiseitherlocalORstaging... }
应用实例也可以通过辅助函数app来访问:
$environment=app()->environment();
4、配置缓存
为了给应用加速,你可以使用Artisan命令config:cache将所有配置文件的配置缓存到单个文件里,这将会将所有配置选项合并到单个文件从而可以被框架快速加载。
应用一旦上线,就要运行一次phpartisanconfig:cache,但是在本地开发时,没必要经常运行该命令,因为配置值经常需要改变。
5、维护模式
当你的应用处于维护模式时,所有对应用的请求都会返回同一个自定义视图。这一机制在对应用进行升级或者维护时,使得“关闭”站点变得轻而易举。对维护模式的判断代码位于应用默认的中间件栈中,如果应用处于维护模式,则状态码为503的 MaintenanceModeException将会被抛出。
要开启维护模式,只需执行Artisan命令down即可:
phpartisandown
要关闭维护模式,对应的Artisan命令是up:
phpartisanup
维护模式响应模板
默认的维护模式响应视图模板是resources/views/errors/503.blade.php
维护模式&队列
当你的站点处于维护模式中时,所有的队列任务都不会执行;当应用退出维护模式这些任务才会被继续正常处理。
维护模式的替代方案
由于维护模式命令的执行需要几秒时间,你可以考虑使用Envoyer实现0秒下线作为替代方案。