最近使用 Lumen 做了 2 个业余项目,特此记录和分享一下。
Lumen 的介绍
在使用一项新的技术时,了解其应用场景是首要的事情。
Lumen 的口号:为速度而生的 Laravel 框架
Lumen 的定位:微框架
Lumen 的应用场景:Lumen 专为微服务或者 API 设计
Lumen 的优点:构建在 Laravel 之上, 使其具备 Laravel 强大的功能
Lumen 包含了 Laravel 的哪些功能:
Blade 模版引擎
Caching 缓存系统
Command Scheduler 计划任务
Controllers 控制器
Eloquent ORM 数据库操作
Error Handling 错误处理
Database Abstraction 数据库抽象层
Dependency Injection 依赖注入
Logging 日志系统
Queued Jobs 队列系统
以上内容来自:Lumen 的介绍,建议点击阅读详情。
Lumen 的现状
目前是1.0 版本,是基于 Laravel 5.x 开发。看 github 上作者更新的很勤快,但是这也导致文档和实际情况有不一致的情况,变动也比较频繁。吐个槽:也许,我下面说的一些情况都发生了变化。
和 Laravel 最大的区别
既然是为了快速而生,砍掉功能的必然的,功能的有或无,事先了解到即可,倒不算作最大的区别。我认为可见的最大变化是:
Lumen 没有使用 Symfony 的路由模块, 而是采用了速度更加快的 nikic/fast-route。
这个变化也延伸出其他的一些变化,比如和路由相关的一些 helper 函数也少了。
不可见的变化:我猜想框架的初始化机制应该也发生了很大的变化,但是对于使用框架并没有可见的影响。因为我没有深入去读框架源码,所以也不敢乱说。
Artisan 命令
Lumen 下的 Artisan 命令比 Laravel 的少很多。这个在项目下运行 php artisan,和 Laravel 的比较一下就知道了。
但是,有些命令没有也不影响原有功能的使用,毕竟 Artisan 命令工具只是起到辅助开发和提高效率的作用。
开发自己的 Artisan 命令
在 Laravel 中,要创建一个新的自定义命令,可以使用 make:console 这个 Artisan 命令。比如:php artisan make:console FooCommand。
但是,在 Lumen 中没有这个 Artisan 命令。于是,我在 Laravel 下使用该命令,生成了文件