2

私の場合は.envファイルでPHP関数を使用しようとしていますrand()

これが私が.envで達成しようとしていることです。

PROTOCOL="http"
DOMAIN="example.com"
URI="www.{$DOMAIN}"
RAND=rand(1,5)
CDN_URI="cdn{$RAND}.{$DOMAIN}"
CDN_URL="{$PROTOCOL}://{$CDN_URI}"

ご覧のとおり、CDN サブドメインを表す 1 から 5 までのランダムな整数を生成しようとしてhttp://cdn2.example.comhttp://cdn4.example.comます。

.env での PHP の使用はネイティブでサポートされていないと思いますが、何か方法や回避策はありますか?

PS私はLaravel 5を使用しています。

4

2 に答える 2

2

この.envファイルは、プレーン テキストであるため、PHP 関数をサポートしていません。このファイルは、(OS からの) 環境変数のフォールバックとして設計されているため、PHP コードを使用することはできません。代わりに、グローバル乱数が本当に必要な場合は、グローバル変数を使用して同様のことを行うことができます。

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

次に、メイン コンテキストの外側 (関数内など) で番号を使用する必要がある場合は、次のように宣言する必要がありますglobal $rand

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

しかし、それは私の意見では醜いアプローチです。達成しようとしていることに応じて、それを行うためのより良い方法があります。

アップデート

あなたはLaravelを使っているので。rand()次のように、いくつかの設定ファイルの/config/dir の下に functionの呼び出しを追加できます'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

于 2015-09-15T12:56:33.207 に答える