资讯专栏INFORMATION COLUMN

谈谈 Laravel 5.5 的 「自动发现」和此刻心情【社交系统研发日记七】

mo0n1andin / 1513人阅读

摘要:看到第二个就知道了,和的自动发现类似,我们是在中记录服务提供者信息,而是在目录中查找后写入到。从这里读取服务提供者列表,然后在函数中合并服务提供者,然后加载,从服务提供者中还可以继续加载服务提供者。

看了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 。

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

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

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

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

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

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

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

开源代码仓库

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

ThinkSNS官网:http://www.thinksns.com

内测申请方式

提供个人/企业联系方式及认证信息(实名ID/企业营业执照照片或扫描件)及申请说明,发送邮件至lihecong@zhishisoft.com即可获得内测资格,申请从速。

欢迎各位关注者通过邮件,以图+文的形式发送至官方邮箱lihecong@zhishisoft.com反馈发现的问题,备注机型及系统版本。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30602.html

相关文章

  • 基于 Laravel Route 社交系统ThinkSNS+ Component【研发日记系列三

    摘要:在社交系统中有这样一个命令主要是用作包的安装,升级,卸载。这在开发过程中很有用。内测申请方式提供个人企业联系方式及认证信息实名企业营业执照照片或扫描件及申请说明,发送邮件至将有机会获得首批内测资格,名额有限,申请从速。 在前面,我介绍了拓展类型,分别有 plus-compnent 和 plus-plugin 两个,这里重点讲以下如何实现 plus-component 的。 plus-c...

    pf_miles 评论0 收藏0
  • 简析ThinkSNS+ 计算字符显示长度方法!【社交系统研发日记

    摘要:今天我们来聊一下可能很多人都会头疼的东西显示长度。需求是这样的,在字符的显示上,两个英文单词才占一个中文或者其他语言的显示长度。好在在无意间发现一个奇怪的东西这个函数计算非英文单词外是除了符号例如中文就是按照汉字个数算的,也是同理。 今天我们来聊一下可能很多人都会头疼的东西:显示长度。 需求是这样的,在字符的显示上,两个英文单词才占一个中文或者其他语言的显示长度。如下: showImg...

    Miracle 评论0 收藏0
  • 不使用三方包时,如何在社交系统ThinkSNS中建立优雅用户权限管理【研发日记13】

    摘要:本文主要全面讲解在不适用第三方包的情况下,如何在基于框架上,研发社交系统时,简历一套优雅而不失性价比的用户权限管理体系功能,内含真实代码。需求场景就是用户组权限节点,这个需求有很多很好的第三方包实现。但是已经足以胜任用户组权限判断逻辑了。 本文主要全面讲解在不适用第三方包的情况下,如何在基于Laravel框架上,研发社交系统ThinkSNS+时,简历一套优雅而不失性价比的用户权限管理体...

    monw3c 评论0 收藏0
  • 不使用三方包时,如何在社交系统ThinkSNS中建立优雅用户权限管理【研发日记13】

    摘要:本文主要全面讲解在不适用第三方包的情况下,如何在基于框架上,研发社交系统时,简历一套优雅而不失性价比的用户权限管理体系功能,内含真实代码。需求场景就是用户组权限节点,这个需求有很多很好的第三方包实现。但是已经足以胜任用户组权限判断逻辑了。 本文主要全面讲解在不适用第三方包的情况下,如何在基于Laravel框架上,研发社交系统ThinkSNS+时,简历一套优雅而不失性价比的用户权限管理体...

    JackJiang 评论0 收藏0
  • 不使用三方包时,如何在社交系统ThinkSNS中建立优雅用户权限管理【研发日记13】

    摘要:本文主要全面讲解在不适用第三方包的情况下,如何在基于框架上,研发社交系统时,简历一套优雅而不失性价比的用户权限管理体系功能,内含真实代码。需求场景就是用户组权限节点,这个需求有很多很好的第三方包实现。但是已经足以胜任用户组权限判断逻辑了。 本文主要全面讲解在不适用第三方包的情况下,如何在基于Laravel框架上,研发社交系统ThinkSNS+时,简历一套优雅而不失性价比的用户权限管理体...

    0xE7A38A 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<