首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于Laravel中共享组件的包中的配置文件

用于Laravel中共享组件的包中的配置文件
EN

Stack Overflow用户
提问于 2018-01-01 19:32:58
回答 1查看 991关注 0票数 5

引言

我有一个巨大的项目,其中包含了许多Laravel项目,负责不同的事情。项目部分共享相同的数据库(用户、权限、角色、日志.)例如,有一个项目用于处理所有其他项目的用户数据和权限。

因此,在本例中,例如,在项目中存在重复的模型(用户、权限、角色)。我通过构建独立的包来解决这个问题,将其作为一个作曲家包包含到所有共享这些模型的项目中。

问题

我的问题是关于所需软件包的配置。例如,现在我使用斯帕蒂的许可包来处理权限和角色。我的每个项目在这些包中共享相同的配置更改。

  • 在我的共享包中也有处理这些配置的方法吗?
  • 一个包可以覆盖另一个的配置文件吗?
  • Laravel实际上是如何处理在所需的包中存在同名配置文件的情况的?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-01 22:09:22

创建共享服务

您可以创建一个包,并让所有项目将其注册为依赖项。使用该包覆盖所有依赖项配置文件。

在您的共享服务中,您需要为您希望覆盖的每个服务提供者创建一个服务提供者。扩展依赖项的服务提供程序,并使用register方法加载您自己的配置文件,而不是您的依赖项的配置文件。

例如:

代码语言:javascript
运行
复制
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中删除您的依赖项的服务提供者并添加您自己的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48052623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档