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

看了 Taylor Otwell 发表的 Package Auto-Discovery In Laravel 5.5 第一反应是“卧槽。。。?”

为啥。。。也怪我,在开发之前忘记看5.5的开发代码动态,之前发的文章中也提到了,在 ThinkSNS+ 开发场景中,我们不可能让用户去 config/app.php 修改配置,所以为了解决加载包的问题,我们开发了 Laravel 服务提供者的增强版 可以看 plus/doc/pakcage 是的,增强版的 服务提供者,增加功能如下:

  • 可以加载友好的加载其他「服务提供者」(这在开发包的时候需要依赖其他 laravel 拓展包很有用)
  • 服务提供者转到 composer.json 配置(无需修改配置了)
  • 针对包更友好的 publish (Laravel 的 vendor:publish 要求输入服务提供者类,我们的只要求输入包名称)
  • 处理器,简化版的命令行,可以用一个函数写一个简单的处理方法。

看到第二个 就知道了,和 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 做准备。来吧!!!

Seven 的代码太渣,欢迎关注我的新拓展包 medz/cors 解决 PHP 项目程序设置跨域需求。

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 5

桑心

1年前

所以有时候事务都有两面性,一方面我们期待更新,另一方面我们害怕更新。

1年前

@edwin404 是的~而且要升级,还需要付出一些代价。

1年前

这是极客才有的烦恼,我这种渣渣就没这样的烦恼,我极度关注产品用着好不好用,从不在乎你用的是什么代码哈哈,:laughing:

1年前

@jobsssss 哈哈~这个确实是~不过现在已经升级完成,目前的方法是在现有 Laravel 5.4 基础上兼容 5.5 生成的包记录文件,等 5.5 发布,框架升级到 5.5 后将兼容代码删除即可。

1年前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!