在版本5中,在配置文件中定义全局变量的另一种形式是什么?


What's an alternative form defining a global variable inside a config file, in laravel 5?

在我的应用程序中,我将定义一个配置文件,该文件的字符串取决于我想放入参数的其他字符串。我用一个例子来更好地解释

/config/specs.php内容

$var1 = 'blah01';
$var2 = 'blah02';

return [
'specs01' => "This is $var1",
'specs02' => "This is $var2"
...
]

这是我迄今为止发现的…并且实际上看起来像工作。

但是我不太相信这种方法:我是否在Larevel的全球范围内添加了一些污垢?

我知道有机会使用env('var01')函数来地址env文件,以便在我的配置数组中有参数。但我也不喜欢在。env文件中有太多的键值对。

你有什么建议?

我是否会遇到框架全局作用域的问题?(这是我还在调查的事情…)

多谢

我认为没有比这更好的方法了。。env文件用于根据环境变化的配置,我理解这些值不是特定于环境的。

在全局作用域中添加一些变量是不会有任何问题的,因为Laravel和其他所有以面向对象的方式编写的包很少使用全局变量。

如果你真的担心全局变量冲突,你可以将所有变量存储在一个数组中,并将这个数组分配给一个变量,这个变量的名字你肯定不会在任何地方使用,例如:

$variableWithSuperUniqueName = [
  'var1' => 'blah01',
  'var2' => 'blah02',
];
return [
  'specs01' => "This is {$variableWithSuperUniqueName['var1']}",
  'specs02' => "This is {$variableWithSuperUniqueName['var2']}",
  ...
];

这样,你将只用一个变量污染全局作用域,并通过给这个变量一个唯一的名字来避免冲突。