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 相关文章推荐
学习使用PHP数组
Oct 09 PHP
Windows下安装Memcached的步骤说明
Apr 25 PHP
php学习笔记 类的声明与对象实例化
Jun 13 PHP
服务器变量 $_SERVER 的深入解析
Jul 02 PHP
用PHP来计算某个目录大小的方法
Apr 01 PHP
php实现的漂亮分页方法
Apr 17 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
Jun 23 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
Mar 21 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 PHP
PHP如何获取Cookie并实现模拟登录
Jul 16 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
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
使用PHP和XSL stylesheets转换XML文档
2006/10/09 PHP
PHP4实际应用经验篇(7)
2006/10/09 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
jquery高效反选具体实现
2013/05/05 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
2015/08/04 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
2020/01/22 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
Python中使用Inotify监控文件实例
2015/02/14 Python
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
Python爬取微信小程序Charles实现过程图解
2020/09/29 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
工作失误检讨书范文大全
2014/01/13 职场文书
出租房屋协议书
2014/09/14 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL