Laravel 中的配置文件

前言

最近又在巩固Laravel进阶课程,平时的工作使用的不是Laravel框架,很多的知识点和原理都忘记的差不多了,我想我每次学习完一节课程,可不可以记录下自己的学习感受呢,这样下次忘记的时候翻阅文章把忘记的地方拾起来。

以前我的学习都是用思维导图,或者在课程最后写下一些自己的感受,但是写的都太碎片了,有的没的,所以我想把内容丰富一下,结合自己的理解,再加上一些思考,这样文章也比较有内容一下。

Laravel中的配置文件

Laravel框架的配置文件有很多,除了默认的配置文件外,你安装的扩展也会有配置文件,了解配置文件就很重要。

比如你要修改数据库的密码账户,那必须的修改数据据配置文件database.php,修改Session的配置文件session.php。各式各样的配置文件的功能不一样,不同作用的配置会在不同的文件中,那么到底有那些配置文件,这里简单的列举一下。

  • app.php
  • auth.php
  • cache.php
  • database.php
  • mail.php

上面我列举了一些配置文件,还有一些配置文件就不贴出来了,可以到项目的根目录中config目录下查看,这个目录存放的就是框架的配置文件,一些第三方扩展的配置文件也会放在config目录下。

我的学习方法是对这些配置文件不做了解,只要知道app.php是应用配置相关的,比如时区、语言、bug模式等的,database.php是数据库配置相关的,其他的用到了再说,一下子学习太多忘得也是飞快的。

配置文件里面都有什么呢,很简单,就是定义了一个数组,然后返回这个数组即可,以app.php配置文件为例

return [
    'connections' => [

        'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => env('PUSHER_APP_CLUSTER'),
                'useTLS' => true,
            ],
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
        ],

        'log' => [
            'driver' => 'log',
        ],

        'null' => [
            'driver' => 'null',
        ],

    ],

];

配置文件中有很多的配置项,这些配置项组成了一个个配置文件,通过这些配置文件完成项目各种服务的配置。

修改配置

配置文件常用的操作就是修改配置了,修改配置用两种方法,第一种配置就是直接修改配置文件,这种方式最简单也是最直接的,不过这种方案在Laravel中不太建议,这是因为有些配置修改起来还是很频繁的。比如修改debug模式,本地开发需要开启debug模式,生产环境需要关闭它,如果我们直接修改app.php文件,如果稍加不注意还会导致其他问题。如果我们使用了git来管理项目,这个app.php修改就会纳入到版本管理中,需要提交修改,但是这个修改没有意义。

env函数

从上面得知直接修改配置文件不好,优雅的方案是修改.env文件,我们把常规的配置放在.env文件中,然后通过env()函数读取。env文件中的配置,比如读取.env文件中数据库用户名的配置可以用env('DB_DATABASE','root'),这样就可以获取数据库的用户名了,然后在database.php文件用调用env函数。

return [
....
'mysql' => [
            'database' => env('DB_DATABASE', 'forge'),
   ]
....
]

这样一来我们就可以不用修改database.php文件的配置项,通过修改.env文件对应的配置即可,同时这次修改不会纳入到git版本库中,这是因为.env文件被git设置成忽略状态。

env函数读取的是.env文件中的配置,我们看下这个文件中都有些什么。

....
APP_NAME=bbs
APP_ENV=local
APP_KEY=base64:vRlNNAiIyAZOlfQJ5vswjD2M4Rsus17kUWwRgbLodko=
APP_DEBUG=true
...

可以看到这个文件不是一个php文件,配置项的格式是配置项名称=xxx,我们也可以添加自己的配置项,比如加一个时间配置TIMEZONE=Asia/Shangehai,通过env('TIMEZONE')进行读取。env函数的第二个参数是设置默认值,意思就是说如果.env文件没有这个配置项那么它的返回值是第二个参数。

如果我们给.env文件添加了配置项,记得把添加的配置添加到.env.example文件中,这个文件会纳入到版本库中,方便我们上线进行使用这些添加的配置。

config函数

如果我要的配置不在.env文件中而在mail.php文件中,我要临时设置和读取该怎么办,这个时候我们就要使用config函数了,这个函数在使用上有些特色,我们一一说。

比如我现在要读取mail.php文件中的driver配置项,可以使用config('mail.driver'), 如果要获取mail.php文件中所有的配置项可以使用config('mail'),注意两种方式的区别。

如果我们想临时的修改配置,但是又不像让它生效,可以使用config(['mail.driver'=>'sendmail']),这样邮箱配置中的驱动配置就改为了sendmail,不过这种方式是临时的,并不会写入到配置文件中。

探索

在课程中我们知道要修改语言和时区,课程中采用的是修改config.php文件,其实也可以在.env文件中设置时区和语言的配置项,然后在app.php文件中使用env函数读取即可。

下面演示一下这种做法。

#.env文件新增如下内容
APP_TIMEZONE=Shanghai
APP_LOCALE=zh-CN

# app.php文件修改如下内容
'timezone' => env('APP_TIMEZONE','PRC'),
'locale' => env('APP_LOCALE','en'),

记得上面在.env文件中添加的内容,同时也添加到.env.example文件中。

不过这么做也有不好的地方,首先时区和语言一般都不会修改,把这种不太容易修改的配置放在.env文件种,会导致.env文件越来越臃肿,所以不常用的配置我们还是建议放在对应的配置文件种进行配置,不要添加到.env文件。

这种只是列出另外一种设置配置的方式,你也可以根据你的项目需求采用合理的方案,合适自己的才是最好的。

总结

以上就是关于配置文件相关的内容,不过文章关于配置文件的内容停留在使用层面,Laravel中源码是什么样子的,这里就没有列举了,以及env如何工作这里都没有讨论,以后有机会再说吧。

php
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!