Laravel配置文件结构

时间:2018-07-03 09:52:23

标签: php laravel laravel-5 laravel-5.4

我们对多个站点使用相同的代码库。并且将有一些配置文件,这些配置文件既是站点特定的,也是常见的设置。我们希望将常用设置与站点特定设置合并。

我们的配置文件夹结构为-

app / config-

  • ssc /
  • brg /
  • app.php
  • common.php

,依此类推。 sscbrg将分别保存sscbrg网站的网站特定配置。

为此,我们必须做-

    config('common');
    config('brg.settings');

但是在我们的代码库中,我们没有使用子文件夹机制。当我们将要实现子文件夹系统时,我们必须更改代码库以实现我要避免的特定于站点的文件夹。

有什么方法可以实现子文件夹系统,而不必更改代码库?

1 个答案:

答案 0 :(得分:1)

在多租户环境中

您可以将设置合并到中间件中的通用配置中,也可以在知道您所在的站点时将其合并:

config('common');
config('brg.settings'); // inside each have the same keys
config('ssc.settings'); // inside each have the same keys

因此,假设您想要common.settings,其中settings来自brg.settingsscc.settings,则可以尝试以下操作:

config([
    'common' => array_merge(
        config('brg'), 
        config('common')
    )
]); 

如果您想对其进行修改,以使brg.settings成为常见的键,请尝试以下操作:

config([
    'common' => array_merge(
        config('brg.settings'), 
        config('common')
    )
]); 

更新-使用共享(已复制)文件夹方法

可以说您的配置文件夹具有:

config/common.php
config/brg/settings.php

然后,您可以尝试创建从config/brg/settings.phpconfig/settings.php的符号链接

$ cd config
$ ln -s brg/settings.php settings.php

您甚至可能希望将brg/settings.php从config文件夹中移到类似sites/brg/settings/php的位置,以避免laravel构建所有站点config的组合,而只需在config中使用符号链接即可

或者

作为部署的一部分,您可以创建一个artisan命令,以创建所需的物理配置文件,{。config/site/settings.php)位于.env中。

我认为将特定于站点的配置移出config文件夹仍然是一件好事,以避免Laravel需要解析不需要的文件。