谈谈 Laravel 5.5 的 「自动发现」和此刻心情【社交系统研发日记七】

看了Taylor Otwell发表的Package Auto-Discovery In Laravel 5.5第一反应是php

图片描述

为啥。。。laravel

也怪我,在开发以前忘记看5.5的开发代码动态,以前的文章中也提到过,在ThinkSNS+开发场景中,咱们不可能让用户去 config/app.php 修改配置,因此为了解决加载包的问题,咱们开发了Laravel服务提供者的加强版能够看plus/doc/pakcagegit

是的,加强版的服务提供者,增长功能以下:github

l 能够友好的加载其余「服务提供者」(这在开发包的时候须要依赖其余laravel拓展包颇有用)json

l 服务提供者转到composer.json配置(无需修改配置了)bootstrap

l 针对包更友好的publish(Laravel的vendor:publish要求输入服务提供者类,咱们的只要求输入包名称)app

l 处理器,简化版的命令行,能够用一个函数写一个简单的处理方法。composer

看到第二个就知道了,和laravel 5.5的自动发现相似,咱们是在 bootstrap/cache/providers.php 中记录服务提供者信息,而Laravel 5.5是在vendor目录中查找后写入到 bootstrap/cache/package.php 。ide

是的,咱们的实现思路差很少,但咱们支持更多功能。从这里读取服务提供者列表,而后在 IlluminateFoundationApplication::registerConfiguredProviders 函数中合并服务提供者,而后加载,从服务提供者中还能够继续加载服务提供者。函数

说下个人心情,大概是这样:图片描述,又喜又悲~

开心,高兴,Laravel更易用了,另外一个心情;

惆怅,由于我在社交系统ThinkSNS+中开发了这一特性后,公司包几乎都是以这种方式实现的。

你会说,把这些包配置字段设置下不就行了嘛?但是,在这种方式没定型以前,已经修改过一次,难道一个多月后又要修改一次?惨不忍睹呀!!!我怕我会被揍,想一想就有点痛。

图片描述

今天在群里说这个话题,某开发者:“哈哈,我终于开发了画中画功能”,而后谷歌:“Android 8 原生支持”。其实道理同样的,并非由于官方原生支持了很差,而是在纠结,用官方的?仍是继续维护本身的?本身的不必定有官方好,官方支持更稳定。

总结,咱们以为废弃掉如今的安装器(bootstrap/cache/providers.php 是由Composer安装器插件写入的),而后增长一份代码,从vendor目录匹配出来,写入到 bootstrap/cache/package.php 中去,只为5.5作准备。来吧!!!

开源代码仓库

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

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

内测申请方式

提供我的/企业联系方式及认证信息(实名ID/企业营业执照照片或扫描件)及申请说明,发送邮件至lihecong@zhishisoft.com便可得到内测资格,申请从速。

欢迎各位关注者经过邮件,以图+文的形式发送至官方邮箱lihecong@zhishisoft.com反馈发现的问题,备注机型及系统版本。

相关文章
相关标签/搜索