Laravel 5.3 学习笔记之 配置


Posted in PHP onAugust 28, 2016

1、简介

Laravel 的所有配置文件都存放在 config 目录下,每个配置项都有注释,以保证浏览任意配置文件的配置项都能直观了解该配置项的作用及用法。

2、访问配置值

你可以使用全局辅助函数 config 在应用的任意位置访问配置值,该配置值可以文件名+“.”+配置项的方式进行访问,当配置项没有被配置的时候返回默认值:

$value = config('app.timezone');

如果要在运行时设置配置值,传递数组参数到 config 方法即可:

config(['app.timezone' => 'America/Chicago']);

3、环境配置

基于应用运行的环境不同设置不同的配置值能够给我们开发带来极大的方便,比如,我们通常在本地和线上环境配置不同的缓存驱动,这一机制在 Laravel 中很容易实现。

Laravel 使用 Vance Lucas 开发的 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')) {
  // The environment is local
}

if (App::environment('local', 'staging')) {
  // The environment is either local OR staging...
}

应用实例也可以通过辅助函数 app 来访问:

$environment = app()->environment();

4、配置缓存

为了给应用加速,你可以使用 Artisan 命令 config:cache 将所有配置文件的配置缓存到单个文件里,这将会将所有配置选项合并到单个文件从而可以被框架快速加载。

应用一旦上线,就要运行一次 php artisan config:cache,但是在本地开发时,没必要经常运行该命令,因为配置值经常需要改变。

5、维护模式

当你的应用处于维护模式时,所有对应用的请求都会返回同一个自定义视图。这一机制在对应用进行升级或者维护时,使得“关闭”站点变得轻而易举。对维护模式的判断代码位于应用默认的中间件栈中,如果应用处于维护模式,则状态码为 503 的  MaintenanceModeException 将会被抛出。

要开启维护模式,只需执行 Artisan 命令 down 即可:

php artisan down

要关闭维护模式,对应的 Artisan 命令是 up:

php artisan up

维护模式响应模板

默认的维护模式响应视图模板是 resources/views/errors/503.blade.php

维护模式 & 队列

当你的站点处于维护模式中时,所有的队列任务都不会执行;当应用退出维护模式这些任务才会被继续正常处理。

维护模式的替代方案

由于维护模式命令的执行需要几秒时间,你可以考虑使用 Envoyer 实现 0 秒下线作为替代方案。

PHP 相关文章推荐
PHP4 与 MySQL 交互使用
Oct 09 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
May 23 PHP
FCKeditor添加自定义按钮
Mar 27 PHP
在同一窗体中使用PHP来处理多个提交任务
May 08 PHP
php 页面执行时间计算代码
Dec 04 PHP
用PHP读取和编写XML DOM的实现代码
Feb 03 PHP
PHP 事件机制(2)
Mar 23 PHP
基于session_unset与session_destroy的区别详解
Jun 03 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
Jun 09 PHP
php网站地图生成类示例
Jan 13 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
May 13 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
Jul 10 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 #PHP
PHP实现导出带样式的Excel
Aug 28 #PHP
Linux系统中为php添加pcntl扩展
Aug 28 #PHP
mac系统下为 php 添加 pcntl 扩展
Aug 28 #PHP
PHP编写简单的App接口
Aug 28 #PHP
PHP导出带样式的Excel示例代码
Aug 28 #PHP
总结对比php中的多种序列化
Aug 28 #PHP
You might like
PHP仿博客园 个人博客(2) 数据库增添改删
2013/07/05 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
php接口技术实例详解
2016/12/07 PHP
php curl批处理实现可控并发异步操作示例
2018/05/09 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
详解Vue中localstorage和sessionstorage的使用
2017/12/22 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
解决pip install的时候报错timed out的问题
2018/06/12 Python
Python实现Linux监控的方法
2019/05/16 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
Python加速程序运行的方法
2020/07/29 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
学术诚信承诺书
2014/05/26 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
学生违反校规检讨书
2014/10/28 职场文书
无房证明样本
2015/06/17 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
求职信如何撰写?
2019/05/22 职场文书