TP v5中环境变量在项目中的应用

简介: 环境变量,顾名思义就是在不同的系统环境,同一个变量的值可以有所不同。如开发环境、测试环境与正式环境下,数据库配置、静态资源文件Url前缀、缓存、各种key等配置都不相同,对于提交到仓库中的代码,理论上不应该将与环境相关的这些参数传进去。

环境变量,顾名思义就是在不同的系统环境,同一个变量的值可以有所不同。

如开发环境、测试环境与正式环境下,数据库配置、静态资源文件Url前缀、缓存、各种key等配置都不相同,对于提交到仓库中的代码,理论上不应该将与环境相关的这些参数传进去。但怎样实现有所区分,各自维护呢?没有经历过团队协作开发和利用工具自动化部署代码的人应该不会理解其中的小痛苦。环境变量就是一个比较好的实现方式了。

TP的v5中利用PHP对环境变量的读取以及模拟环境变量的支持,可以很好的实现这种需求。

以下为引用http://www.kancloud.cn/manual/thinkphp5/189989

在开发过程中,可以在应用根目录下面的.env来模拟环境变量配置,.env文件中的配置参数定义格式采用ini方式,例如:

app_debug =  true
app_trace =  true

如果你的部署环境单独配置了环境变量,那么请删除.env配置文件,避免冲突。

使用下划线分割定义配置参数名:

database_username =  root
database_password =  123456

或者使用

[database]
username =  root
password =  123456

获取环境变量的值可以使用下面的两种方式获取:

Env::get('database.username');
Env::get('database.password');
// 同时下面的方式也可以获取
Env::get('database_username');
Env::get('database_password');

可以支持默认值,例如:

// 获取环境变量 如果不存在则使用默认值root
Env::get('database.username','root');

可以直接在应用配置中使用环境变量,例如:

return [
    'hostname'  =>  Env::get('hostname','127.0.0.1'),
];

环境变量中设置的app_debug和app_trace参数会自动生效(优先于应用的配置文件),其它参数则必须通过Env::get方法才能读取。

环境变量的配置方法在此不详述了。

目录
相关文章
|
存储 Docker 容器
Docker load 大镜像(17G) 报错no space left on device
Docker load 大镜像(17G) 报错no space left on device
|
消息中间件 人工智能 移动开发
阿里云Rocket MQ PHP Http SDK发送消息示例Demo
消息队列 RocketMQ 版支持 RESTful 风格的 HTTP 协议通信,并提供了以下 7 种语言的 SDK,下面以最新的PHP Http SDK为范例介绍RocketMQ消息的发送。
3196 0
阿里云Rocket MQ PHP Http SDK发送消息示例Demo
|
安全 Java Android开发
SpringBoot 代码混淆方案 ProGuard
在软件开发中,代码混淆是故意创建人类难以理解的源代码或机器代码的行为。代码混淆处理修改了可部署的文件,因此黑客很难从中读取信息,但仍然保持完整的功能。这最初是为 android 平台引入的。它现在能够支持 SpringBoot 2。
|
缓存 数据可视化 算法
倾斜单体化模型技术实现
倾斜单体化模型技术实现
178 1
|
监控 NoSQL 算法
在Linux中,如何排查死锁问题?
在Linux中,如何排查死锁问题?
|
机器学习/深度学习 人工智能 并行计算
英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构技术和性能对比带你解决疑惑
英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构技术和性能对比带你解决疑惑
英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构技术和性能对比带你解决疑惑
|
负载均衡 算法 网络协议
SLB基本概念
SLB基本概念
913 3
|
存储 关系型数据库 MySQL
『Mysql』Mysql四种分区方式及组合分区落地实现
📣读完这篇文章里你能收获到 - Mysql分区的概念 - Mysql分区四种分区方式的落地及案例 - Mysql分区的管理
638 0
『Mysql』Mysql四种分区方式及组合分区落地实现
|
Web App开发 JavaScript
使用CRXjs、Vite、Vue 开发 Chrome 多页面插件,手动配置 vite.config.ts 和 manifest.json 文件
使用CRXjs、Vite、Vue 开发 Chrome 多页面插件,手动配置 vite.config.ts 和 manifest.json 文件
735 0