这里是输出系统的环境变量有哪些
![](https://img.haomeiwen.com/i5334916/200a5eef8403873c.png)
上面的输出结果,就是下面这个。这个就是当前系统环境变量
![](https://img.haomeiwen.com/i5334916/d10e08dab0be68fb.png)
下面在到和app同一层级创建.env文件,这个文件在框架运行的时候就会自动加载,读取里面的配置。下图是添加下标为email的环境变量。
![](https://img.haomeiwen.com/i5334916/43ef4f39d5f4c7ec.png)
经过上面的编写,下面就打印出来了当前的环境变量
![](https://img.haomeiwen.com/i5334916/d33b1b6a2d76a7c4.png)
若想输出指定的环境变量,那么这样写就可以了。但是,一旦 $_ENV['PHP_EMAIL']里面的环境变量不存在,就会报错
![](https://img.haomeiwen.com/i5334916/29f3a24ab2cbdfd3.png)
![](https://img.haomeiwen.com/i5334916/510a1fbfe61478ab.png)
另外,thinkphp5中还专门提供了一个think\Env类,使用 Env::get(‘email’) 和 $_ENV['PHP_EMAIL'] 是有区别的。Env::get('email')是直接根据.env配置文件中的配置读取的,即使.env中没有这个环境变量,也不会报错,而是提示null。而用$_ENV['PHP_EMAIL']则要加前缀,否则找不到的话也会报错。(原因是thinkphp5框架会自动给环境变量的配置加上前缀,而两种使用方法又不同)
![](https://img.haomeiwen.com/i5334916/010505e542dc90ef.png)
Env::get('email')中,实际上还可以输入第二个形式参数:
![](https://img.haomeiwen.com/i5334916/d327d5b6d0de4de8.png)
如果想要有一个配置组,那么就这么写就可以了
![](https://img.haomeiwen.com/i5334916/4e98fde83212e9d2.png)
会自动的加上HOSTNAME后缀和PHP前缀
![](https://img.haomeiwen.com/i5334916/adb99e614b3ddee0.png)
下面是获取环境变量值的方法
![](https://img.haomeiwen.com/i5334916/39ed852c8306230f.png)
经过上面的学习,该如何编写.env文件,才能让我们的环境变量配置更加方便,更加容易管理呢?(下面的有点难度,有点绕)
第一步:下面的dev通常是代表开发环境,prod代表生产环境
![](https://img.haomeiwen.com/i5334916/0e3e5f38f27744a2.png)
若是没有配置系统环境变量,就默认使用'dev'开发环境,换句话说就是在.env中没有app_status的值,就用dev
补充:下面这幅图忘记引用Env了,use think\Env 同时,下面的app_status在.env文件中并没有这个设置。
![](https://img.haomeiwen.com/i5334916/8f4a3d856b015908.png)
总结一下就是:
在config.php中设置app_statues键的值为.env文件中的值。而前面学习的场景配置中,只要在config.php的同一层级,分别创建对应的场景文件,那么就只需要改变config.php中的app_statues值就能使用相应的场景文件。而这里的config.php的app_statues的值又是从.env文件获取的。因此,最后只需要修改.env文件的中的值,就可以实现环境的切换。
同理,若想配置数据库,那么只需要这么做:
先在.env文件中写上[database]这样的数组
![](https://img.haomeiwen.com/i5334916/c3e8d157d60dfdb5.png)
该创建文件还是要创建的,这个database.php文件,由于前两节在入口文件中将conf文件夹配置成了配置文件路径,所以,这里的配置文件都会对app中的模块起作用。另外该导入模块还是要导入的,比如use think\Env
![](https://img.haomeiwen.com/i5334916/e7c533efc6f8663a.png)
网友评论