看完TaylorOtwell发表的PackageAuto-DiscoveryInLaravel5.5,第一反应是什么。..我也有责任。开发前忘记看5.5的开发代码动态了。上一篇文章提到,在ThinkSNS+开发场景下,用户是不可能去config/app.php修改配置的,所以为了解决加载包的问题,??我们开发了增强版的Laravel服务提供者,在plus/doc/pakcage可以看到,增强版的服务提供者有如下新增功能:l可以友好的加载其他“服务提供者”(这个在开发包的时候很有用在其他laravel扩展包上)l服务提供者转为composer.json配置(无需修改配置)l发布对包更友好(Laravel的vendor:publish需要服务提供者类的输入,我们的只需要输入包名)lprocessor,命令行的简化版,可以用一个函数写出简单的处理方法。看到第二个就知道了,类似laravel5.5的自动发现,我们把服务提供者信息记录在bootstrap/cache/providers.php中,Laravel5.5在vendor目录下查找后写入bootstrap/cache/包.php。是的,我们的实现思路是相似的,但是我们支持的功能更多。从这里读取服务提供者列表,然后在IlluminateFoundationApplication::registerConfiguredProviders函数中合并服务提供者,然后加载,从服务提供者开始,可以继续加载服务提供者。说说我的心情吧,大概是这样的:开心和难过~开心,开心,Laravel更好用,另一种心情;郁闷,因为我在社交系统ThinkSNS+开发这个功能后,公司包几乎都是这样实现的。你会说,设置这些包配置字段不是很好吗?不过,这个方法在最终确定之前,已经修改过一次了。一个多月了还要再修改吗?这太糟糕了!!!生怕被打,想想都有些心疼。今天在群里聊这个话题,有开发者:“哈哈,终于开发出画中画功能了”,然后谷歌:“Android8nativesupport”。其实道理都是一样的,不是官方原生支持不好,而是你纠结了,用官方的?还是继续维护自己?自己的不一定比官方好,官方支持更稳定。综上所述,我们认为应该丢弃当前安装器(bootstrap/cache/providers.php是Composer安装器插件写的),然后添加一段代码,从vendor目录匹配,写入bootstrap/缓存/包。php,只为5.5做准备。来吧!!!开源代码仓库GitHub:https://github.com/zhiyicx/th...(点击star每天关注开发状态。)ThinkSNS官网:http://www.thinksns.com内部内测申请方式提供个人/企业联系方式、证明信息(实名身份证/营业执照照片或扫描件)及申请须知,发送邮件至lihecong@zhishisoft.com获取内测资格,尽快申请可能的。欢迎关注者通过邮件以图文形式反馈至官方邮箱lihecong@zhishisoft.com,并备注机型及系统版本。
