引言
我有一个巨大的项目,其中包含了许多Laravel项目,负责不同的事情。项目部分共享相同的数据库(用户、权限、角色、日志.)例如,有一个项目用于处理所有其他项目的用户数据和权限。
因此,在本例中,例如,在项目中存在重复的模型(用户、权限、角色)。我通过构建独立的包来解决这个问题,将其作为一个作曲家包包含到所有共享这些模型的项目中。
问题
我的问题是关于所需软件包的配置。例如,现在我使用斯帕蒂的许可包来处理权限和角色。我的每个项目在这些包中共享相同的配置更改。
发布于 2018-01-01 22:09:22
创建共享服务
您可以创建一个包,并让所有项目将其注册为依赖项。使用该包覆盖所有依赖项配置文件。
在您的共享服务中,您需要为您希望覆盖的每个服务提供者创建一个服务提供者。扩展依赖项的服务提供程序,并使用register
方法加载您自己的配置文件,而不是您的依赖项的配置文件。
例如:
class SharedPermissionServiceProvider extends PermissionServiceProvider
{
public function register()
{
if (isNotLumen()) {
$this->mergeConfigFrom(
__DIR__.'/../config/permission.php',
'permission'
);
}
$this->registerBladeExtensions();
}
}
如果您正在使用Laravel5.5或更高版本,则可能需要对每个依赖项进行选择退出包自动发现,以防止使用依赖项的服务提供者。而是在composer.json
中注册您的服务提供者。
如果您正在使用Laravel5.4或更低版本,或者如果您正在覆盖一个不使用自动发现的服务提供者,请从您的config/app.php
中删除您的依赖项的服务提供者并添加您自己的。
https://stackoverflow.com/questions/48052623
复制相似问题