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