什么是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,每日关注开发动态。)
开源不易,为了争取开源,我们团队做了很多努力。把基于Laravel的作品展示在大家面前,之后专栏会持续不断的分享ThinkSNS +开发过程中的技术细节。
能看见这里的,一定是真爱~谢谢你们的爱❤❤❤❤❤
这里是传送门:
《ThinkSNS+基于 Laravel master 分支【研发日记一】》
《ThinkSNS+研发中前端的抉择(webpack/Vue)踩坑日记【研发日记二】》
《基于 Laravel Route 的 ThinkSNS+ Component【研发日记三】》
相关推荐
这个标题“thinksns.zip_thinksns_thinksns+源码_thinksns源码”暗示了我们正在讨论的是ThinkSNS的源代码压缩包,包含完整的项目文件,可用于开发和定制。 1. **ThinkSNS系统概述**:ThinkSNS是一个基于PHP语言和...
ThinkSNS+ 是一款强大的社交网络软件,其移动端提供了丰富的功能,让用户可以在手机上轻松享受社区互动的乐趣。本说明书将详细介绍如何在移动设备上注册、登录、找回密码,以及使用各项功能。 一、注册/登录 1. **...
### 开源社交系统ThinkSNS V4.2版本发布及其版本介绍 #### 一、界面优化与用户体验提升 - **卡片化风格设计**:新版ThinkSNS采用了直观且易用的卡片化界面设计,使整体视觉更为简洁明快,提高了用户的浏览效率与...
thinksns社交系统中,文件名为“thinksns”的压缩包包含了整个系统的源代码和必要的配置文件。解压后,用户可以查看到系统结构,包括前端界面、后台管理、数据库模型以及各类插件等。这些文件构成了系统的基础框架,...
微博社交系统ThinkSNS_V3.1-----------ThinkSNS开源微博系统,是智士的开源社交平台。采用PHP+MySQL技术平台,微博+应用的产品模式,同时拥有iphone、android客户端、wap、3G版界面。通过应用、插件、风格包..
ThinkSNS(简称TS),是智士软件旗下的... ThinkSNS全方位提供网站开发|移动端APP定制|微信端软件研发|小程序|社群系统搭建|源代码|技术支持,是建立社交网站|企业社区论坛|微博平台|APP软件|系统集成|互联网创业首选.
【ThinkSNS:基于Laravel构建的用户生态基础框架系统】 ThinkSNS是一款采用现代Web...在实际开发过程中,熟悉Laravel和ThinkSNS的特性,结合"slimkit-plus-df58454"提供的资源,将有助于高效构建出满足需求的Web应用。
一个功能强大,易于开发和动态扩展的社交系统。加上是PSR规范代码统一,并功能块松连接。您安装完成Plus并不意味着已经成功安装了所有功能,因为Plus使用预设的原则,所以您安装完成后拥有了所有可以被请求的REST...
【描述】"基于PHP的ThinkSNS开源社交系统正式版源码.zip" 指出这个压缩包包含了ThinkSNS系统的源代码,这意味着用户可以自由地查看、修改和分发这些代码,以适应不同的需求和定制化开发。.zip文件格式是一种常见的...
【标题】"PHP实例开发源码——ThinkSNS 开源社交系统正式版.zip" 提供的是一个基于PHP语言开发的开源社交系统ThinkSNS的完整源代码。这个系统旨在为开发者提供一个构建社区、社交网络平台的基础框架,帮助开发者快速...
安装与部署ThinkSNS的过程相对简单,一般包括以下步骤:下载最新版本的源码,配置合适的服务器环境,修改配置文件以连接数据库,运行安装脚本,最后进行必要的安全设置。值得注意的是,为了保证系统的安全性和性能,...
朋友圈是ThinkSNS+移动端的一个核心功能,用户可以在朋友圈中发表动态、查看好友的动态、评论、点赞、收藏、分享等。 评论是ThinkSNS+移动端提供的一种社交功能,用户可以对他人的动态进行评论,评论内容可以是文字...
ThinkSNS+是一个开源的社交平台,支持多平台部署,能够满足各种互联网平台的建设需求,例如社交网站、微博平台、教育平台、商城系统以及企业文化和知识社区等。本文将围绕这份文档的知识点展开详细介绍。 首先,...
thinksns是一个以php mysql进行开发的开源sns系统。 ThinkSNS基于许多优秀的开源软件开发,...ThinkSNS是国内最大的开源社群系统和移动社交引擎,以最专业化的社交类产品服务于企业和创业者,并致力于社交SNS在商业
ThinkSNS 开源社交系统 v4.6.1更新日志 【修复】聊天无法使用emoji问题 【修复】后台禁用用户后,app第三方登录可登录问题 【修复】部分接口问题 【修复】h5个人中心获取用户信息问题 【修复】后台设置积分问题 ...
《ThinkSNS V4 APP与ThinkSNS+ PC:一体化社交平台深度解析》 ThinkSNS V4 APPThinkSNS+ PC是一款集成了移动端APP和PC端应用的社交软件解决方案,旨在为企业和个人用户提供全面、高效且自定义化的社交网络服务。这...
总结来说,整合ThinkSNS与Ucenter主要涉及安装Ucenter、在Ucenter后台配置ThinkSNS应用、修改ThinkSNS配置文件以及测试通信状态。通过这样的步骤,可以实现用户数据的统一管理和同步,提升平台的用户体验。正确理解...
ThinkSNS1.6系统测试方案旨在全面评估该社交网络平台的功能性、性能、用户界面和配置适应性,确保其在正式发布前达到预定的质量标准。此方案由七星团队的成员共同参与制定,包括柳荣庆、李申城、王栓成、宋冰、...
【标题】"PHP实例开发源码—ThinkSNS 开源社交系统正式版.zip" 提供的是一个基于PHP语言开发的开源社交系统——ThinkSNS的完整源代码。这个系统允许开发者或企业构建自己的社交网络平台,例如类似于Facebook或...
内置的超级管理员 ... 安装方法 - 程序包放入服务器 - 导入数据库文件ts_2_0.sql 新增加的功能 - 新浪式的两栏页面 ...- 完善微博广场(全新的UI、新增名人堂功能、热门转发和热门话题可以屏蔽某些话题)