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

简介: 看了Taylor Otwell发表的Package Auto-Discovery In Laravel 5.5第一反应是 为啥。。。 也怪我,在开发之前忘记看5.5的开发代码动态,之前的文章中也提到过,在ThinkSNS+开发场景中,我们不可能让用户去 config/app.

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

_1

为啥。。。

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

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

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

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

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

_3

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

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

开源代码仓库

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

目录
相关文章
|
小程序 Windows
uniapp运行微信小程序routeDone的错误问题
uniapp运行微信小程序routeDone的错误问题
2797 0
|
4月前
|
机器学习/深度学习 自然语言处理 测试技术
Qwen3技术报告首次全公开!“混合推理模型”是这样炼成的
近日,通义千问Qwen3系列模型已开源,其技术报告也正式发布。Qwen3系列包含密集模型和混合专家(MoE)模型,参数规模从0.6B到235B不等。该模型引入了“思考模式”与“非思考模式”的动态切换机制,并采用思考预算机制优化推理性能。Qwen3支持119种语言及方言,较前代显著提升多语言能力,在多个基准测试中表现领先。此外,通过强到弱蒸馏技术,轻量级模型性能优异,且计算资源需求更低。所有Qwen3模型均采用Apache 2.0协议开源,便于社区开发与应用。
2678 28
|
消息中间件 中间件 测试技术
软件体系结构 - 遗留系统演化策略
【4月更文挑战第11天】软件体系结构 - 遗留系统演化策略
461 4
|
存储 资源调度 JavaScript
PyMuPDF 1.24.4 中文文档(八)(1)
PyMuPDF 1.24.4 中文文档(八)
551 0
PyMuPDF 1.24.4 中文文档(八)(1)
|
机器学习/深度学习 人工智能 算法
鱼类识别Python+深度学习人工智能+TensorFlow+卷积神经网络算法
鱼类识别Python+深度学习人工智能+TensorFlow+卷积神经网络算法
309 2
鱼类识别Python+深度学习人工智能+TensorFlow+卷积神经网络算法
|
SQL Oracle 关系型数据库
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
216 0
|
10天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
9天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
401 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话