通过匹配文本获取环境变量名称

时间:2019-07-16 07:24:22

标签: php laravel

我在.env文件中有一些变量具有匹配的名称,如下所示

    MY_SITE_01=http://www.google.com
    MY_SITE_02=http://www.facebook.com
    MY_SITE_03=http://www.twitter.com

当前使用

来获取值
    env('MY_SITE_01')
    env('MY_SITE_02')
    env('MY_SITE_03')

有没有一种方法可以动态地执行此操作,或者只是传递MY_SITE即可获取变量的所有全名。

3 个答案:

答案 0 :(得分:0)

有一种解决问题的方法,您可以将逗号分隔的网站网址存储到单个env变量中,如下所示:

MY_SITES=http://www.google.com,http://www.facebook.com,http://www.twitter.com

当需要检索其值时,可以执行以下操作:

$mySites  = explode(',', env('MY_SITES')); 

答案 1 :(得分:0)

您可以制作一个my_site.php文件并将其放置在config文件夹中,并且在文件中您可以按以下方式返回数据:

<?php

return [
    'MY_SITE' => [
        'http://www.google.com',
        'http://www.facebook.com',
        'http://www.twitter.com'
    ]
];

然后在您的控制器或您想要的任何其他地方,您可以使用config帮助器来检索值。

print_r(config('my_site.MY_SITE'));

答案 2 :(得分:0)

将这些环境添加到config/app.php

'MY_SITES' => [
    'MY_SITE_01' => env('MY_SITE_01', 'http://www.google.com'),
    'MY_SITE_02' => env('MY_SITE_02', 'http://www.facebook.com'),
    'MY_SITE_03' => env('MY_SITE_03', 'http://www.twitter.com')
]

得到它,

print_r(config('app.MY_SITES'));

这将从.env文件中获得价值,因此不再需要管理多个位置。