如何做到 laravel 配置可以网站后台配置【社群系统thinksns+研发日记四】

如何做到 laravel 配置可以网站后台配置【社群系统thinksns+研发日记四】_php_web-itnose

首页
asp
php
javascript
iis
apache
html/css
coldfusion
ajax
vbscript
cgi
xml/xsl
跨浏览器开发
ruby/rails
程序员
html5
jquery
seo
jboss
json
angularjs
markdown
nginx
thinkphp
yii
pageadmin
extjs
wampserver
kendo ui
coffeescript
gulp
ecmascript
bootstrap

itnose首页 > web > php >

如何做到 laravel 配置可以网站后台配置【社群系统thinksns+研发日记四】

2017-06-06 15:50

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

需求场景

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

如何覆盖配置

我们首先打开 illuminatefoundationapplication::bootstrapwith 方法,代码如下:

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

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

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

哪里添加的事件

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

后置事件的实现

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

很简单,因为 app(‘config’) 是一个 illuminatecontractsconfigrepository 接口的实例,所以直接调用 set 方法进行配置覆盖。而 zhiyiplussupportconfiguration 类是封装的自定义配置加载类,加载的配置文件存放在一个 yaml 文件中,这个类实现了 自定义配置文件的加载和保存。这样,我们从后台调用 api 然后 constroller 调用这个类的 save 方法进行持久化。

zhiyiplussupportconfiguration::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/th…(点击star,每日关注开发动态。)

thinksns官网:http://www.thinksns.com/

内测申请方式

  提供个人/企业联系方式及认证信息(实名id /企业营业执照照片或扫描件)及申请说明,发送邮件至lihecong@zhishisoft.com将有机会获得首批内测资格,名额有限,申请从速。

  参与内测请提供以下资料

  1个可接收验证码的手机号;1个指定邮箱;1位测试人员姓名;1个您喜欢的账号昵称

  开源不易,为了争取开源,我们团队做了很多努力。把基于laravel的作品展示在大家面前,之后专栏会持续不断的分享thinksns +开发过程中的技术细节。

相关搜索:
如何做图表
jsp后台管理系统
jsp配置
.net配置
hibernate 配置

相关文章

2017-06-05 21:07 基于 laravel route 的 社交系统thinksns+ component【研发日记系列三】
2017-06-08 16:22 基于 laravel 的 thinksns+ alpha.2 版本发布【研发日记六】
2017-06-14 17:34 谈谈 laravel 5.5 的 「自动发现」和此刻心情【社交系统研发日记七】
2016-03-27 22:40 laravel后台可修改配置自动加载
2017-02-09 10:24 [ laravel 5.4 文档 ] èµ·æ­¥ — 配置

更多相关文章>>

最新文章

2017-06-20 01:35 老铁们,有没有可能让php文件同时只能一个人访问
2017-06-20 01:35 怎么禁止图片直接通过url访问
2017-06-20 01:35 求救!启动wamp只能用本机访问,同局域网的其它设备访问不到!搞了大半天t-t
2017-06-19 15:35 nginx下的thinkphp问题
2017-06-19 15:35 php form 文件上传

更多最新文章>>

热门搜索

配置hibernate
spring配置
spring 配置
webservice配置
配置webservice
如何做excel图表
jsp环境配置
.net环境配置
hibernate 配置文件
spring mvc 配置
spring 事务配置
spring配置文件
spring 配置文件
spring mvc配置
spring aop配置

京icp备14022385号-2

©2014 itnose软件编程教程 | 联系我们:email:twobrushes@126.com qq:35155868

Posted in 未分类

发表评论