在.env(dotenv)文件中使用PHP函数

时间:2015-09-15 12:39:32

标签: php laravel laravel-dotenv

我正在尝试在.env文件中使用PHP函数,在我的情况下是int func(int a, int b)

这是我想要在.env;

中实现的目标
rand()

正如您所看到的,我正在尝试生成从1到5的随机整数,这些整数表示CDN子域,因此在请求中我将获得PROTOCOL="http" DOMAIN="example.com" URI="www.{$DOMAIN}" RAND=rand(1,5) CDN_URI="cdn{$RAND}.{$DOMAIN}" CDN_URL="{$PROTOCOL}://{$CDN_URI}" ,而在另一个http://cdn2.example.com中依此类推。

我想在.env中使用PHP本身不受支持,但有什么方法/解决方法吗?

P.S。我正在使用Laravel 5。

2 个答案:

答案 0 :(得分:2)

.env文件(纯文本)不支持PHP函数。此文件被设计为环境变量(来自操作系统)的后备,因此您无法在其上使用PHP代码。如果你真的需要全局随机数,你可以使用全局变量做类似的事情,而不是:

global $rand;
$rand = rand(1,5);

然后,您需要在主要上下文之外使用您的号码(如内部函数),您需要声明global $rand

function someFunction ()
{
    global $rand;
    doSomethingWithRand($rand);
}

但在我看来,这是一种丑陋的做法。根据你想要达到的目标,有一种更好的方法。

更新

因为你正在使用Laravel。您可以在rand()目录下的某些配置文件中添加对/config/功能的调用,例如:'rand' => rand(1,5),。然后,要访问您的随机数,您应该使用:

// If your config was set inside /config/app.php.
config('app.rand');

// OR

// If your config was set inside /config/services.php, for instance.
config('services.rand');

参考:http://laravel.com/docs/5.1/installation#accessing-configuration-values

答案 1 :(得分:0)

您可以使用以下类似的语法在您的环境文件中使用PHP:

<?php
return array(
    'PROTOCOL' => "http",
    'DOMAIN' => "example.com",
    'URI' => "www.{$DOMAIN}",
    'RAND' => rand(1,5),
    'CDN_URI' => "cdn{$RAND}.{$DOMAIN}",
    'CDN_URL' => "{$PROTOCOL}://{$CDN_URI}",
);