V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Zhiyicx
V2EX  ›  程序员

聊聊 Laravel 5.5 的 「自动发现」和此刻心情 [社交系统研发日记七]

  •  
  •   Zhiyicx · 2017-06-14 16:48:29 +08:00 · 2170 次点击
    这是一个创建于 2747 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    Alt text

    为啥。。。

    也怪我,在开发之前忘记看 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 函数中合并服务提供者,然后加载,从服务提供者中还可以继续加载服务提供者。

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

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

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

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

    Alt text

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

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

    开源代码仓库

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

    咨询 QQ:3298713109

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

    内测申请方式

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

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

    6 条回复    2017-06-20 15:09:17 +08:00
    torbrowserbridge
        1
    torbrowserbridge  
       2017-06-14 16:51:54 +08:00
    一般看到长篇的技术文章,下意识的就会拉到最下面看看有没有 link
    hvsy
        2
    hvsy  
       2017-06-14 21:26:52 +08:00
    之前 5.3 的时候.在自己的项目实现了模板的 component 指令.然后过了一段时间看 twitter.发现 5.4 beta 也有了.后面升级到 5.4 之后还是改成了 laravel 自带的.所有的 view 都过一篇的感觉真爽.
    Zhiyicx
        3
    Zhiyicx  
    OP
       2017-06-16 09:45:36 +08:00
    @torbrowserbridge 哈哈哈哈哈,我主要是希望多来点 star~~~求关注
    Zhiyicx
        4
    Zhiyicx  
    OP
       2017-06-16 09:45:57 +08:00
    @hvsy 厉害了哦
    hvsy
        5
    hvsy  
       2017-06-16 10:59:48 +08:00 via iPhone
    @Zhiyicx 改的死去活来的
    Zhiyicx
        6
    Zhiyicx  
    OP
       2017-06-20 15:09:17 +08:00
    @hvsy 说明你对 laravel 是真爱
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2769 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 13:06 · PVG 21:06 · LAX 05:06 · JFK 08:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.