聊聊 Laravel 5.5 的 「自动发现」和此刻心情!

简介: 看了Taylor Otwell发表的Package Auto-Discovery In Laravel 5.5第一反应是 为啥。。。 也怪我,在开发之前忘记看5.5的开发代码动态,之前的文章中也提到过,在ThinkSNS+开发场景中,我们不可能让用户去 config/app.

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

_1

为啥。。。

也怪我,在开发之前忘记看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 。

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

说下我的心情,大概是这样_2,又喜又悲~

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

惆怅,因为我在ThinkSNS+中开发了这一特性后,公司包几乎都是以这种方式实现的。

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

_3

今天在群里说这个话题,某开发者:“哈哈,我终于开发了画中画功能”,然后谷歌:“Android 8 原生支持”。其实道理一样的,并不是因为官方原生支持了不好,而是在纠结,用官方的?还是继续维护自己的?自己的不一定有官方好,官方支持更稳定。

总结,我们觉得废弃掉现在的安装器(bootstrap/cache/providers.php 是由Composer安装器插件写入的),然后增加一份代码,从vendor目录匹配出来,写入到 bootstrap/cache/package.php 中去,只为5.5做准备。来吧!!!

开源代码仓库

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

目录
相关文章
|
JavaScript 前端开发 数据库
让你少踩坑的fastadmin教程(3)
让你少踩坑的fastadmin教程
1444 0
让你少踩坑的fastadmin教程(3)
|
27天前
|
缓存 前端开发 中间件
37 玩玩 Laravel(结束)
本文详细介绍如何通过 PHPStudy 和 Composer 安装 Laravel,并进行简单配置。首先创建工程目录,接着检测环境配置,确保必要的扩展已开启。然后使用 Composer 命令安装 Laravel 框架,最后进行简单的路由测试,验证安装成功。
29 2
|
JavaScript Java 区块链
经常忘记网址?将Vue项目一键打包为桌面客户端 十分钟让你解决烦恼(一)
经常忘记网址?将Vue项目一键打包为桌面客户端 十分钟让你解决烦恼
219 0
|
7月前
|
JavaScript 前端开发 索引
某东大厂面试js手写题【手写代码附带注释,放心食用,博主亲测】
某东大厂面试js手写题【手写代码附带注释,放心食用,博主亲测】
61 0
|
缓存 前端开发 JavaScript
前端Vue小项目的一个非常诡异离谱的"眼神不好"Bug
公司放假, 现在来提升自己的前端的技术, 想着使用饿了么UI搭建一个简单的页面, 并完成mock数据的获取, 一个小项目就好了....
86 0
|
前端开发 JavaScript API
wordpress插件开发踩坑记
想要使用 REST API 需要自己额外安装插件:WordPress REST API,现在 WordPress 5.0以上的版本已经默认支持 REST API了,不需要额外去安装插件
137 0
|
JavaScript 应用服务中间件 网络安全
经常忘记网址?将Vue项目一键打包为桌面客户端 十分钟让你解决烦恼
本文讲解了如何将一个Vue项目打包为桌面客户端,实现像Excel一样双击运行,适用于管理较多项目且经常忘记网址的场景。本文还讲解了 Vue 项目从下载依赖、打包和Nginx部署的全过程,可以给开发者参考学习。
11966 3
|
前端开发 API PHP
laravel框架总结
laravel框架总结
102 0
|
JavaScript 应用服务中间件 网络安全
经常忘记网址?将Vue项目一键打包为桌面客户端 十分钟让你解决烦恼(二)
经常忘记网址?将Vue项目一键打包为桌面客户端 十分钟让你解决烦恼
192 0