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

  

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

  

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

  

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

  

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

  

<>强如何覆盖配置

  

我们首先打开照亮\ \应用基础::bootstrapWith方法,代码如下:

  

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

  

重点代码在$ this(“事件”)→火(“引导:”。引导程序,美元($ this));和美元这(“事件”)→火(“引导:”。引导程序,美元($ this));上,很明显是加载并运行启动加载器的前置和后置事件。

  

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

  

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

  

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

  

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

  

<强>哪里添加的事件

  

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

  

后置事件的实现
我们在创建了\一度\ + \引导\ LoadConfiguration这样一个类,注册为后置事件,路径为:/app/引导/LoadConfiguration。php,然后实现代码如下:

  

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

  

很简单,因为应用程序(“配置”)是一个照亮\ config \ \合同库接口的实例,所以直接调用集方法进行配置覆盖。
而一度陷入\ + \ \配置支持类是封装的自定义配置加载类,加载的配置文件存放在一个YAML文件中,这个类实现了自定义配置文件的加载和保存。这样,我们从后台调用API然后constroller调用这个类的保存方法进行持久化。

  

一度\ + \ \配置:支持:getConfigurationBase
为什么要特殊说一下这个方法?因为这个方法的特殊性,也是深度融合实现的重要函数,在存储库中支持app.name=价值这样的形式进行深曾键值赋值,利用这一个特性,这个函数将多维数组转换为一维。
效果:

  

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

  

然后调用应用程序(“配置”)→设置(arr)美元就对Laravel的配置进行了深度合并。
最后,持久化保存的YAML内容如下:

  

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

  

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

  

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

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