聊聊 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 做准备。来吧!!!

本作品采用《CC 协议》,转载必须注明作者和本文链接
Seven 的代码太渣,欢迎关注我的新拓展包 medz/cors 解决 PHP 项目程序设置跨域需求。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 4

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

6年前 评论
medz

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

6年前 评论
medz

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

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
创始人 @ Odore Inc.
文章
33
粉丝
202
喜欢
532
收藏
198
排名:23
访问:24.7 万
私信
所有博文
社区赞助商