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

什么是ThinkSNS+

  ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案。

本文分享下利用 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 镜像配置合并。

源码授权购买

现行稳定系统V4系列全端产品(PC / H5 / APP)授权源码购买,产品体验,请致电:18108035545

开源版源码官方正版获取唯一渠道:关注公众号“thinksns”,回复“开源版”即可获得最新源码压缩文件地址。

开源代码仓库:

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

原文地址:https://www.cnblogs.com/thinkSNS/p/11003371.html

时间: 2024-10-25 22:29:49

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

如何做到 Laravel 配置可以网站后台配置【社交系统ThinkSNS+研发日记四】

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

Laravel入门及实践,快速上手社交系统ThinkSNS+二次开发

[摘要]自从社交系统ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门. 温馨提示: l 本文纯干货,文字和代码居多,且适合零基础Laravel学习者: l 本文会新建一个名为 blog 的 Laravel 程序,这是一个非常简单的博客. 本文主要内容: · 新建 Laravel 程序,如何连接数据库: · Laravel 程序的基本文件结构: · MVC(模

【社交系统ThinkSNS+研发日记三】基于 Laravel Route 的 ThinkSNS+ Component

[社交系统ThinkSNS+研发日记系列] 一.<ThinkSNS+ 基于 Laravel master 分支,从 1 到 0,再到 0.1> 二.<基于 Laravel 开发 ThinkSNS+ 中前端的抉择(webpack/Vue)踩坑日记> 在前面,我介绍了拓展类型,分别有 plus-compnent 和 plus-plugin 两个,这里重点讲以下如何实现 plus-component 的. plus-component 是什么 就如同名字一样,plus 代表的是 Thin

社交系统ThinkSNS+第4阶段H5端研发更新发布播报

社交系统ThinkSNS+第4阶段于5月15日更新发布,本次社交系统TS+发布类型:移动端优化,新增功能发布,以下为部分内容,详情如下: 一.优化.调整与修复 以下为本期已记录的部分内容 H5端更新内容 1. 动态热门和最新没有置顶数据: 2. 消息-通知,有通知的时候,该页面没有最新数据显示,而且除了审核有默认数据外,其他的默认数据都没有:(备注:用浏览器查看的是有数据的):(测试备注除了上一个问题,其他的已修复) 3. 动态详情页顶部点击用户头像,页面跳转到了404:(所有头像点击的路径不对

sns社交系统ThinkSNS+ 更新至V0.8.2,新增圈子功能

sns社交系统"ThinkSNS+"于7月15日发布了V0.8.0,含开源版本web+H5,及Android APP和iOS APP客户端. V0.8.2版本将于7月29日(本周六)晚20点之前发布,主要新增圈子功能. 智士软件旗下开源社交系统ThinkSNS即将进入10周年,推出并行两代系统ThinkSNS V4和ThinkSNS+,以专业易用的技术源码输出,驱动互联网社交软件建设及创业,使用ThinkSNS改造或革新你的网站·APP·微信站点,将会是可靠软件产品选型趋势. 现行系列

社交系统ThinkSNS+安装部署演示

ThinkSNS(简称TS),一款全平台综合性社交软件系统,10年来为国内外大中小企业和创业者提供社交化软件研发及技术解决方案.目前有ThinkSNS V4.ThinkSNS+两个并行系统. ThinkSNS一直不断优化,持续更新,旨在为大家带来更好的系统体验,能够更快更好地应用到商业化.企业化等多样化的软件项目中,加速你的开发进度,减少研发时间周期. ThinkSNS社交系统主要功能有:微博(朋友圈).即时聊天.直播.论坛.资讯.CMS.活动.频道.圈子.问答.打赏等主流社交功能应有尽有. T

社交系统ThinkSNS+ V0.8.7发布,“问答”功能千呼万唤始出来

[摘要]社交系统ThinkSNS+又更了,本次跳过了0.8.6,直接发布0.8.7,新增功能主要有问答系统,问答系统主要有最新问答.精选.悬赏.热门.全部以及话题:第三方登录,含QQ登录.微信登录.微博登录. 本次社交系统ThinkSNS+更新的APP V0.8.7版本,已经在我们程序猿工程师加班加点的情况下,于9月9日晚更新,体验地址不变 更多产品体验请访问:http://www.thinksns.com/experience.html 温馨提示: ThinkSNS-plus(简称TS+)的P

精益之识别和消除研发过程中浪费的思路和模式

本文基于精益思想和精益软件开发,针对研发过程中的"浪费现象"进行深入分析.浪费分成存粹的浪费和必要的浪费,其中存粹的浪费需要消除,而必要的浪费可以进行压缩.结合日常研发过程,本文对如何识别这些浪费.如果消除存粹的浪费以及如何压缩必要的浪费进行剖析,并提供思路和模式. 一.理论基础 精益思想来自制造业,引入软件行业不过10年,目前很多理念还是停留在理论阶段,很难在实际研发过程中进行直接应用和推广.精益的很多思想个人认为是对软件行业有参考价值的,例如本文的主题"消除浪费"

开源社交系统ThinkSNS V4更新播报!

现行系列为ThinkSNS V4(第四代):第五代产品ThinkSNS+.本次开源社交系统ThinkSNS V4,新增.优化修复内容如下.在这里除了鸣谢我们的程序员,还要感谢我们忠实的粉丝的支持! ThinkSNS简介 ThinkSNS(简称TS),是智士软件旗下的开源微博.社交系统,含微博.论坛.资讯.频道.商城.活动.定位.找人.直播.问答等一系列功能.采用PHP+MySQL技术,核心(微博.用户系统)+多应用+多插件的产品模式.拥有web.Iphone APP.Android APP以及H