Lumen 是由 Taylor Otwell 设计的全新的 PHP 框架,专为构建闪电般快速的微服务和 API 而设计。当速度是必需时,Lumen 应该是您的首选。
框架的一个很酷的地方是您仍然可以使用所有您喜欢的 Laravel 功能,例如 Eloquent、缓存、队列、验证、路由、中间件和强大的 Laravel 服务容器。此外,如果您使用 Lumen 启动项目,并且最终需要更多功能,迁移到功能齐全的 Laravel 是一个简单的过程。
为了了解更多幕后故事,我与 Taylor 进行了简短的采访,了解了这个项目。
是什么让你决定创建 Lumen?
当我构建 Envoyer 时,我编写了两个小型“微服务”来支持它。其中一个是部署后运行状况检查。这是一个小型应用程序,存在于三个不同的 DigitalOcean 区域中。我使用 Silex 构建了该应用程序,但是,我不得不重新研究如何建立 PDO 数据库连接。我希望有一个非常小的 Laravel 安装,我可以开箱即用地使用 DB::update
。
另一个 Envoyer 服务是“心跳”Cron 监控。由于这些 URL 可以被数百个,甚至数千个 Cron 作业每分钟调用一次,我需要确保它非常快。因此,我使用 Slim 构建了该服务。但是,我再次不得不建立一些更健壮的错误处理以及数据库连接。我再次希望有一个小的 Laravel “精简”安装。
这就是 Lumen 诞生的想法。我构建框架进行了三到四次迭代,才找到一个足够快的解决方案。如果我不能说它比 Silex 和 Slim 出色的更快,我不会发布 Lumen。我不想发布一个比其他选项速度更慢的东西。
Lumen 的名字从何而来?
Lumen 是对 Laravel 使用的“Illuminate”组件的改写。Illuminate 组件是 Laravel 框架的各个部分,例如数据库、缓存、队列等。因此,首先,我认为 Lumen 作为名字听起来很酷。它只有两个音节,而不是像 Laravel 那样三个音节。这可能听起来很疯狂,但我考虑过这类事情以及你在说这个词时会联想到的 mental images。当然,它也延续了基于“光”的名字的传统。
能够直接升级到 Laravel 意义重大。这是从一开始就计划好的吗?
是的,这实际上是使用构成完整栈 Laravel 框架的 Illuminate 组件的自然结果。由于我们使用这些组件,因此很容易提供非常棒的升级体验,我认为这是其他微框架解决方案所缺少的东西。由于 Laravel 生态系统现在包含一个完整栈框架 *和* 一个“官方”支持的微框架,我们可以提供非常棒的升级体验。
你如何在保持如此多出色功能的同时,让框架变得如此快?
这再次得益于 Illuminate 组件带来的巨大便利。基本上,我需要做的就是以不同于完整栈框架的方式将它们“粘合”在一起。这意味着 Lumen 选择了最大速度,而不是在引导过程中实现最大灵活性。实际的 Lumen 框架仓库可能只有十几个文件左右。其余的是 Illuminate 组件。这使我能够很快地完善框架的功能,尽管我花费了三到四次迭代才找到一个真正非常快,同时仍然提供非常强大功能的解决方案。
Lumen 肯定会大受欢迎,我认为您能够轻松迁移到 Laravel 是对 Lumen 和整个 Laravel 生态系统都非常有利的长期效益。要随时了解 Lumen 的最新动态,请务必加入 每周新闻通讯。
