谈一谈 Laravel 5.5 的 「自动发现」和此刻心情
看了Taylor Otwell发表的Package Auto-Discovery In Laravel 5.5第一反应是

为啥。。。
也怪我,在开发之前忘记看5.5的开发代码动态,之前的文章中也提到过,在社交系统ThinkSNS+开发场景中,我们不可能让用户去 config/app.php 修改配置,所以为了解决加载包的问题,我们开发了Laravel服务提供者的增强版可以看plus/doc/pakcage
是的,增强版的服务提供者,增加功能如下:
l 可以友好的加载其他「服务提供者」(这在开发包的时候需要依赖其他laravel拓展包很有用)
l 服务提供者转到composer.json配置(无需修改配置了)
l 针对包更友好的publish(Laravel的vendor:publish要求输入服务提供者类,我们的只要求输入包名称)
l 处理器,简化版的命令行,可以用一个函数写一个简单的处理方法。
看到第二个就知道了,和laravel 5.5的自动发现类似,我们是在 bootstrap/cache/providers.php 中记录服务提供者信息,而Laravel 5.5是在vendor目录中查找后写入到 bootstrap/cache/package.php 。
是的,我们的实现思路差不多,但我们支持更多功能。从这里读取服务提供者列表,然后在 Illuminate\Foundation\Application::registerConfiguredProviders 函数中合并服务提供者,然后加载,从服务提供者中还可以继续加载服务提供者。
说下我的心情,大概是这样:
,又喜又悲~
开心,高兴,Laravel更易用了,另一个心情;
惆怅,因为我在ThinkSNS+中开发了这一特性后,公司包几乎都是以这种方式实现的。
你会说,把这些包配置字段设置下不就好了嘛?可是,在这种方式没定型之前,已经修改过一次,难道一个多月后又要修改一次?惨不忍睹呀!!!我怕我会被揍,想想就有点痛。

今天在群里说这个话题,某开发者:“哈哈,我终于开发了画中画功能”,然后谷歌:“Android 8 原生支持”。其实道理一样的,并不是因为官方原生支持了不好,而是在纠结,用官方的?还是继续维护自己的?自己的不一定有官方好,官方支持更稳定。
总结,我们觉得废弃掉现在的安装器(bootstrap/cache/providers.php 是由Composer安装器插件写入的),然后增加一份代码,从vendor目录匹配出来,写入到 bootstrap/cache/package.php 中去,只为5.5做准备。来吧!!!
开源代码仓库
GitHub:https://github.com/zhiyicx/thinksns-plus(点击star,每日关注开发动态。)
内测申请方式
提供个人/企业联系方式及认证信息(实名ID/企业营业执照照片或扫描件)及申请说明,发送邮件至lihecong@zhishisoft.com即可获得内测资格,申请从速。
欢迎各位关注者通过邮件,以图+文的形式发送至官方邮箱lihecong@zhishisoft.com反馈发现的问题,备注机型及系统版本。
谈一谈 Laravel 5.5 的 「自动发现」和此刻心情的更多相关文章
- 聊聊 Laravel 5.5 的 「自动发现」
ThinkSNS是什么? ThinkSNS(简称TS),一款全平台综合性社交系统,目前最新版本为ThinkSNS+.ThinkSNS V4 ThinkSNS[简]. 看了Taylor Otwell发表 ...
- 面试都在问的「微服务」「RPC」「服务治理」「下一代微服务」一文带你彻底搞懂!
❝ 文章每周持续更新,各位的「三连」是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) ❞ 单体式应用程序 与微服务相对的另一个概念是传统的「单体式应用程 ...
- 谈一谈Java8的函数式编程(二) --Java8中的流
流与集合 众所周知,日常开发与操作中涉及到集合的操作相当频繁,而java中对于集合的操作又是相当麻烦.这里你可能就有疑问了,我感觉平常开发的时候操作集合时不麻烦呀?那下面我们从一个例子说起. 计 ...
- 谈一谈泛型(Generic)
谈一谈泛型 首先,泛型是C#2出现的.这也是C#2一个重要的新特性.泛型的好处之一就是在编译时执行更多的检查. 泛型类型和类型参数 泛型的两种形式:泛型类型( 包括类.接口.委托和结构 没有泛型枚 ...
- 从一张图开始,谈一谈.NET Core和前后端技术的演进之路
从一张图开始,谈一谈.NET Core和前后端技术的演进之路 邹溪源,李文强,来自长沙.NET技术社区 一张图 2019年3月10日,在长沙.NET 技术社区组织的技术沙龙<.NET Core和 ...
- 谈一谈Elasticsearch的集群部署
Elasticsearch天生就支持分布式部署,通过集群部署可以提高系统的可用性.本文重点谈一谈Elasticsearch的集群节点相关问题,搞清楚这些是进行Elasticsearch集群部署和拓 ...
- 谈一谈iOS事件的产生和传递
谈一谈iOS事件的产生和传递 1.事件的产生 发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中. UIApplication会从事件队列中取出最前面的事件,并将事件 ...
- 谈一谈对MySQL InnoDB的认识及数据库事物处理的隔离级别
介绍: InnoDB引擎是MySQL数据库的一个重要的存储引擎,和其他存储引擎相比,InnoDB引擎的优点是支持兼容ACID的事务(类似于PostgreSQL),以及参数完整性(有外键)等.现在Inn ...
- 谈一谈APP版本号问题
如题:谈一谈APP版本号问题 为什么要谈这个问题,周五晚上11~12点,被微信点名,说APP有错,无效的版本号,商城无法下单.我正在准备收拾东西,周末回老家,结果看到这样问题,菊花一紧.我擦,我刚加的 ...
随机推荐
- C#设置WebBrowser默认浏览器
由于VS的WebBrowser控件的默认浏览器是IE7,好多网页兼容性不是很好,所以要修改下默认浏览器. 设置前: 设置后: 在WebBrowser界面加载时执行以下方法,设置浏览器. /// ...
- VB6之HTTP服务器的实现
之前用VBS写过一个,效率和支持比较low,这次闲着没事用VB重写了一次. 当前的实现版本仅支持静态文件的访问(*.html之类),支持访问方式为GET,HTTP状态支持200和404. 两个文件,一 ...
- Watson Explorer Analytical Components 3 - use case scenarios
The followings are the user case scenarios that WEX can be used for generating value. 1.Customer Ins ...
- Html5元素布局
本教程十分简单,适合新手(因为我也是新手).本教程参考了"菜鸟教程". 笔者希望做到元素相对于浏览器的角落布局,即九个典型位置: 这个理念其实和UE4中的UMG锚定一样.Html5 ...
- 【亲测】自动构建多个指定的class并发执行:Jenkins+Maven+Testng框架
要解决的问题:jenkins在自动构建maven项目时如何并发执行多个指定的class类 预置条件:testngXXX.xml文件已指定了多个class类 解决步骤:1.在maven项目中新建指定te ...
- json和xml封装数据、数据缓存到文件中
一.APP的通信格式之xml xml:扩展标记语言,可以用来标记数据,定义数据类型,是一种允许用户对自己标记语言进行定义的源语言.XML格式统一,扩平台语言,非常适合数据传输和通信,业界公认的标准. ...
- VMware虚拟机下Ubuntu连不上网解决
虚拟机:VMware® Workstation 12 Pro Ubuntu: 14.04 问题描述:电脑从公司拿到家打开Ubuntu之后,打开自带Firefox浏览器,显示连接不上网,终端下ping ...
- 机器学习 —— 基础整理(六)线性判别函数:感知器、松弛算法、Ho-Kashyap算法
这篇总结继续复习分类问题.本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 闲话:本篇是本系列[机器学习基础整理]在time ...
- 【SignalR学习系列】4. SignalR广播程序
创建项目 创建一个空的 Web 项目,并在 Nuget 里面添加 SignalR,jQuery UI 包,添加以后项目里包含了 jQuery,jQuery.UI ,和 SignalR 的脚本. 服务端 ...
- MySQL Database Command Line Client
.输入密码:****** 1.1.create datatable Name;创建数据库 1.2.source D://taotao.sql; source后面加sql文件是批量导入sql语句 .ue ...