千家信息网

社交系统ThinkSNS+在研发过程中,如何做到 Laravel 配置可以网站后台配置

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,什么是ThinkSNS+ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+、ThinkSNS V4、T
千家信息网最后更新 2026年11月03日社交系统ThinkSNS+在研发过程中,如何做到 Laravel 配置可以网站后台配置

什么是ThinkSNS+
  ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+、ThinkSNS V4、ThinkSNS【简】。

本文分享下利用 Laravel 的 Bootstrapping 达到网站后台设置 laravel 配置。

需求场景
首先,ThinkSNS+ 作为一个用户可以使用的「社交系统」和开源网站程序一样拥有后台,有一些配置,Laravel 是要求写在 /config/*.php 的配置文件中的,例如 app.name、app.debug 等信息的配置,以及 Jobs 的驱动配置,广播系统的配置等,我们都搬到了网站后台,用户安装后可以不用修改配置文件的情况下镜像配置。

如何覆盖配置

我们首先打开 Illuminate\Foundation\Application::bootstrapWith 方法,代码如下:

重点代码在 $this['events']->fire('bootstrapping: '.$bootstrapper, [$this]); 和 $this['events']->fire('bootstrapped: '.$bootstrapper, [$this]); 上,很明显是加载并运行 bootstrapper 的前置和后置事件。

所以,我们看还有一个方法叫做 beforeBootstrapping 和 afterBootstrapping 然后怎么做呢?我们看

没错,这里是固定了顺序的,我错误的加载顺序,会造成laravel的失败,所以,我们选择在之前继承 Illuminate\Foundation\Application 的应用基础上增加一个事件,代码如下:

哪里添加的事件

因为 ThinkSNS+ 是继承了 Illuminate\Foundation\Application 实现了新的 Application 类,所以我们直接在构造方法里面增加了代码。
这样,当 Laravel 启动,但是还没有加载 bootstrapper 的时候,已经把 加载配置的后置事件注入进去了。当加载配置执行完成后就会执行我注入的后置事件。

后置事件的实现
我们在创建了 \Zhiyi\Plus\Bootstrap\LoadConfiguration 这样一个类,注册为后置事件,路径为: /app/Bootstrap/LoadConfiguration.php ,然后实现代码如下:

很简单,因为 app('config') 是一个 Illuminate\Contracts\Config\Repository 接口的实例,所以直接调用 set 方法进行配置覆盖。
而 Zhiyi\Plus\Support\Configuration 类是封装的自定义配置加载类,加载的配置文件存放在一个 YAML 文件中,这个类实现了 自定义配置文件的加载和保存。这样,我们从后台调用 API 然后 constroller 调用这个类的 save 方法进行持久化。

Zhiyi\Plus\Support\Configuration::getConfigurationBase
为什么要特殊说一下这个方法?因为这个方法的特殊性,也是 depth merge 实现的重要函数,在 Repository 中支持 app.name = value 这样的形式进行深曾键值赋值,利用这一个特性,这个函数将 多维数组转换为一维。
效果:

然后调用 app('config')->set($arr) 就对 Laravel 的 config 进行了 depth merge。
最后,持久化保存的 YAML 内容如下:

所以,基于 depth merge 在 .plus.yml 配置中,只需要保存部分配置,即可不想配置结构的完整性的情况下对 Laravel 镜像配置合并。

开源代码仓库:
GitHub:https://github.com/zhiyicx/thinksns-plus(点击star,每日关注开发动态。)

配置 事件 方法 代码 文件 后台 系统 网站 社交 特殊 函数 情况 用户 镜像 顺序 明显 重要 不用 仓库 创业者 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 互联网科技公司起名 互联网科技工作委员会副主任毛军 互联网金融监管科技数据 互联网通讯科技 科技企业和互联网企业 猪兼强互联网科技 博兴的互联网电子科技公司 宁波青枫互联网科技有限公司 现代互联网科技股 湖南诚度互联网科技有限公司 佳云科技和互联网广告 厦门比较好的科技互联网公司 重庆互联网医院沙龙医盟信息科技 移动互联网科技公司 天津腾达互联网科技有限公司 允成互联网科技有限公司融资 中和天地互联网科技有限公司 吉林省码上互联网科技电话 科技互联网公司两年变化 山东特亿宝互联网科技有限公司 互联网科技公司起名 丰台科技园 互联网 重庆科技学院互联网 海南购全球互联网科技 恒生互联网科技业指数调整周期 2021互联网科技公司排名 宇信科技在杭州互联网排第几 吉林省码上互联网科技电话 保山互联网科技靠谱吗
0