我有一个庞大的项目,其中包含许多负责不同事物的Laravel项目。项目部分共享相同的数据库(用户,权限,角色,日志......),例如,有一个项目用于处理所有其他项目的用户数据和权限。
因此,在这种情况下,项目中有重复的模型(用户,权限,角色)。我通过构建独立包来解决它,将其作为Composer包包含在共享这些模型的所有项目中。
我的问题是关于所需的套餐'组态。例如,现在我使用Spatie's Permission package来处理权限和角色。我的每个项目都在这些包中共享相同的配置更改。
答案 0 :(得分:2)
您可以创建一个包并让所有项目将其注册为 依赖。使用该包覆盖所有依赖项配置文件。
在共享服务中,您需要为要覆盖的每个服务提供商创建服务提供商。扩展您的依赖项服务提供程序,并使用register
方法加载您自己的配置文件,而不是依赖项的配置文件。
例如:
class SharedPermissionServiceProvider extends PermissionServiceProvider
{
public function register()
{
if (isNotLumen()) {
$this->mergeConfigFrom(
__DIR__.'/../config/permission.php',
'permission'
);
}
$this->registerBladeExtensions();
}
}
如果您使用的是Laravel 5.5或更高版本,则可能需要为每个依赖项opt-out of package auto-discovery以防止您的依赖关系。服务提供商被使用。请改为在composer.json
注册您的服务提供商。
如果您使用的是Laravel 5.4或更低版本,或者如果您要覆盖不使用自动发现的服务提供商,请删除您的依赖项'您config/app.php
的服务提供商,并添加您自己的服务提供商。