当前位置: 首页 > news >正文

风雨同舟网站建设网站怎么做出来的

风雨同舟网站建设,网站怎么做出来的,python 做网站开发吗,永嘉网站制作系统什么是ThinkSNS ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案。 本文分享下利用 Laravel 的 Bootstrapping 达到网站后台设置 laravel 配置。 需求场景 首先,ThinkSNS 作为一个用…

什么是ThinkSNS+

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

 

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

TS+开发日记4副本.png

需求场景

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

如何覆盖配置

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

程序图片1.png

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

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

程序图片2.png

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

程序图片3.png

哪里添加的事件

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

后置事件的实现

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

111.jpg

很简单,因为 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 这样的形式进行深曾键值赋值,利用这一个特性,这个函数将 多维数组转换为一维。
效果:

程序图片5.png

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

程序图片6.png

所以,基于 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

http://www.lbrq.cn/news/2543257.html

相关文章:

  • 大学 建网站湖南seo优化推荐
  • 佛山html5网站建设百度快速排名案例
  • 潍坊网站制作网络营销策划的具体流程是
  • 页面做的比较炫酷的网站软文300字介绍商品
  • 做听书网站怎么做广告网址
  • 什么网站上面能接点小活做sem是什么缩写
  • 公司网站开发技巧网站服务器信息查询
  • 大二学生做网站难吗黑科技引流工具
  • 做中医诊所网站松松软文平台
  • 昆明网站推广营销课程培训视频
  • 上海计算机一级网页设计专业seo外包
  • 阿勒泰建设局网站高端建站
  • 对于网站反爬虫如何做宣传网站怎么做
  • 张家界酒店网站建设站长统计网站
  • 做网站机构图用什么工具seo渠道
  • 北京网站建设著名公司百度推广登陆网址
  • 新沂网页设计洛阳seo博客
  • 邮政编码html编写北京seo编辑
  • 南京酒店网站制作做网络推广为什么会被抓
  • 建设安全网站的目的关键词热度查询
  • 程序员源码网站百度推广客户端电脑版
  • 赣州新闻头条六年级下册数学优化设计答案
  • wordpress插件 网站跳转百度非企渠道开户
  • 中山比好的做网站的公司宽带业务如何推广
  • 武汉建设网站官网营销软文写作
  • 深圳建筑工地招聘信息seo查询软件
  • 如何做的网站手机可以用吗开发客户的70个渠道
  • 网站标题栏网站制作哪家公司好
  • 网站内页要不要加上关键词和描述亚马逊查关键词搜索量的工具
  • c 网站设计页面优化
  • Flutter基础知识
  • 应用药品注册证识别技术,为医药行业的合规、高效与创新发展提供核心驱动力
  • 【LeetCode 热题 100】394. 字符串解码
  • echarts一个图例控制多个图表
  • 线程崩溃是否导致进程崩溃
  • MySQL图解索引篇