.env 文件中的嵌套变量如何在 CodeIgniter 4 中工作
How do nested variables within the .env file work in CodeIgniter 4
在 Codeigniter4 站点的“嵌套变量”部分下:
“为了节省键入时间,您可以通过将变量名称包装在 ${...} 中来重用已在文件中指定的变量”
link to CI nesting Variables section
文档中的示例:
BASE_DIR="/var/webroot/project-root"
CACHE_DIR="${BASE_DIR}/cache"
TMP_DIR="${BASE_DIR}/tmp"
我正在尝试使用以下内容
app.baseURL = 'http://localhost:8080/'
google.redirect = ${app.baseURL}Google
但是,它在 print_r($_ENV)
时将其分配为文字
[google.redirect] => ${app.baseURL}Google
我试过使用非命名空间的键,包括 BASE_DIR(根据示例),它一直按文字打印。
有什么奇怪的 - 当我使用以下内容时:
CI_ENVIRONMENT = development
google.redirect = ${CI_ENVIRONMENT}Google
print_r时的结果为:
[CI_ENVIRONMENT] => development
[google.redirect] => developmentGoogle
我的问题是 - 我做错了什么 and/or 这些应该如何 set/used 正确?
根据文档,我应该能够使用 .env 文件中已经使用
分配的任何密钥
${somekeyinthisfile}
稍作查找后,有一个更新的文件位于
https://github.com/codeigniter4/CodeIgniter4/blob/develop/system/Config/DotEnv.php
所有“其他”变化...
这是一个错误修复。所以获取该文件,你会很高兴。
I am pretty sure that the intention wasn't to allow app.xxx settings to be used as variables as the documentation clearly shows, by not
showing them being used. ( yes its 6am now ...)
但这是您的代码,您可以随意使用...因此,如果您想使用 app.xxx 作为变量...
唯一缺少的是正则表达式中的点 (.)
如果您在方法 resolveNestedVariables() 中查看 第 272 行 - system/Config/DotEnv.php 并添加一个 . (点)到正则表达式中,这将使你所有的 app.things 工作。
$value = preg_replace_callback(
'/${([a-zA-Z0-9_.]+)}/',
function ($matchedPatterns) use ($loader) {
我在 [a-zA-Z0-9_
的末尾添加了一个点 (.)
所以
'/${([a-zA-Z0-9_]+)}/',
变成
'/${([a-zA-Z0-9_.]+)}/',
在 Codeigniter4 站点的“嵌套变量”部分下:
“为了节省键入时间,您可以通过将变量名称包装在 ${...} 中来重用已在文件中指定的变量” link to CI nesting Variables section
文档中的示例:
BASE_DIR="/var/webroot/project-root"
CACHE_DIR="${BASE_DIR}/cache"
TMP_DIR="${BASE_DIR}/tmp"
我正在尝试使用以下内容
app.baseURL = 'http://localhost:8080/'
google.redirect = ${app.baseURL}Google
但是,它在 print_r($_ENV)
时将其分配为文字[google.redirect] => ${app.baseURL}Google
我试过使用非命名空间的键,包括 BASE_DIR(根据示例),它一直按文字打印。
有什么奇怪的 - 当我使用以下内容时:
CI_ENVIRONMENT = development
google.redirect = ${CI_ENVIRONMENT}Google
print_r时的结果为:
[CI_ENVIRONMENT] => development
[google.redirect] => developmentGoogle
我的问题是 - 我做错了什么 and/or 这些应该如何 set/used 正确?
根据文档,我应该能够使用 .env 文件中已经使用
分配的任何密钥${somekeyinthisfile}
稍作查找后,有一个更新的文件位于 https://github.com/codeigniter4/CodeIgniter4/blob/develop/system/Config/DotEnv.php 所有“其他”变化...
这是一个错误修复。所以获取该文件,你会很高兴。
I am pretty sure that the intention wasn't to allow app.xxx settings to be used as variables as the documentation clearly shows, by not showing them being used. ( yes its 6am now ...)
但这是您的代码,您可以随意使用...因此,如果您想使用 app.xxx 作为变量...
唯一缺少的是正则表达式中的点 (.)
如果您在方法 resolveNestedVariables() 中查看 第 272 行 - system/Config/DotEnv.php 并添加一个 . (点)到正则表达式中,这将使你所有的 app.things 工作。
$value = preg_replace_callback(
'/${([a-zA-Z0-9_.]+)}/',
function ($matchedPatterns) use ($loader) {
我在 [a-zA-Z0-9_
所以
'/${([a-zA-Z0-9_]+)}/',
变成
'/${([a-zA-Z0-9_.]+)}/',