Laravel 配置文件结构
Laravel configuration file structure
我们对多个站点使用相同的代码库。并且会有配置文件,它们都是站点特定的和通用的设置。我们想将通用设置与站点特定设置合并。
我们的配置文件夹结构是 -
app/config -
- ssc/
- brg/
- app.php
- common.php
等等。 ssc
和 brg
将分别保存 ssc
和 brg
站点的站点特定配置。
为此我们必须做 -
config('common');
config('brg.settings');
但是在我们的代码库中我们没有使用子文件夹机制。当我们将实施子文件夹系统时,我们必须更改代码库以实施我想避免的站点特定文件夹。
有什么方法可以实现子文件夹系统并且不必更改代码库吗?
在多租户环境中
您可以将设置合并到中间件内的公共配置中,或者在您知道自己所在的站点时:
config('common');
config('brg.settings'); // inside each have the same keys
config('ssc.settings'); // inside each have the same keys
所以假设您想要 common.settings
其中 settings
来自 brg.settings
或 scc.settings
您可以尝试如下操作:
config([
'common' => array_merge(
config('brg'),
config('common')
)
]);
如果你想修改它,使 brg.settings
成为 common 中的键,请尝试以下操作:
config([
'common' => array_merge(
config('brg.settings'),
config('common')
)
]);
更新 - 对于共享(复制)文件夹的方法
假设您的配置文件夹有:
config/common.php
config/brg/settings.php
然后你可以尝试创建一个从 config/brg/settings.php
到 config/settings.php
的符号链接
$ cd config
$ ln -s brg/settings.php settings.php
您甚至可能想将 brg/settings.php
从配置文件夹中移出到 sites/brg/settings/php
之类的文件夹中,以避免 laravel 构建所有站点配置的组合并仅使用符号链接在配置中你想要什么。
或者
作为部署的一部分,您可以创建一个 artisan 命令来创建您需要的物理配置文件,例如 config/site/settings.php
给定 .env 中的站点。
我认为将特定于站点的配置移出配置文件夹以避免 Laravel 需要解析不需要的文件仍然很好。
我们对多个站点使用相同的代码库。并且会有配置文件,它们都是站点特定的和通用的设置。我们想将通用设置与站点特定设置合并。
我们的配置文件夹结构是 -
app/config -
- ssc/
- brg/
- app.php
- common.php
等等。 ssc
和 brg
将分别保存 ssc
和 brg
站点的站点特定配置。
为此我们必须做 -
config('common');
config('brg.settings');
但是在我们的代码库中我们没有使用子文件夹机制。当我们将实施子文件夹系统时,我们必须更改代码库以实施我想避免的站点特定文件夹。
有什么方法可以实现子文件夹系统并且不必更改代码库吗?
在多租户环境中
您可以将设置合并到中间件内的公共配置中,或者在您知道自己所在的站点时:
config('common');
config('brg.settings'); // inside each have the same keys
config('ssc.settings'); // inside each have the same keys
所以假设您想要 common.settings
其中 settings
来自 brg.settings
或 scc.settings
您可以尝试如下操作:
config([
'common' => array_merge(
config('brg'),
config('common')
)
]);
如果你想修改它,使 brg.settings
成为 common 中的键,请尝试以下操作:
config([
'common' => array_merge(
config('brg.settings'),
config('common')
)
]);
更新 - 对于共享(复制)文件夹的方法
假设您的配置文件夹有:
config/common.php
config/brg/settings.php
然后你可以尝试创建一个从 config/brg/settings.php
到 config/settings.php
$ cd config
$ ln -s brg/settings.php settings.php
您甚至可能想将 brg/settings.php
从配置文件夹中移出到 sites/brg/settings/php
之类的文件夹中,以避免 laravel 构建所有站点配置的组合并仅使用符号链接在配置中你想要什么。
或者
作为部署的一部分,您可以创建一个 artisan 命令来创建您需要的物理配置文件,例如 config/site/settings.php
给定 .env 中的站点。
我认为将特定于站点的配置移出配置文件夹以避免 Laravel 需要解析不需要的文件仍然很好。