Ran*_*rki 174 php laravel lumen
我阅读了文档,似乎Lumen是Laravel,功能较少.我肯定错过了什么.我正在寻找Laravel和Lumen的组件和功能的比较表.有谁知道这些差异?
luk*_*ter 197
使用最新版本的Lumen(5.2),Microframework专注于无状态API.
该文件规定:
Lumen 5.2代表了减肥Lumen的转变,专注于提供无状态的JSON API.因此,框架不再包含会话和视图.如果您需要访问这些功能,则应使用完整的Laravel框架.
流明就是速度.它比Laravel更快,每秒可处理更多请求.
Laravel是一个将许多组件粘合在一起的框架(第三方和Laravels自己的组件).现在,Lumen使用了许多相同的组件,但将引导过程降至最低.你可以说它是一种"不同的胶水",组件(因此很多功能)大多是相同的.
通过在配置和更改默认引导过程方面消除框架的一些灵活性来实现性能改进.
除此之外,默认情况下会禁用更多功能,必须先激活它们才能使用它们.举个例子:Facades(比如DB::table())
你首先需要取消注释这一行bootstrap/app.php以启用它们:
// $app->withFacades();
Run Code Online (Sandbox Code Playgroud)
Dotenv环境文件和Eloquent也是如此.
对于路由,Lumen使用nikic/FastRoute而不是symfonys路由器,因为它执行得更好,并为微框架提供了另一个大的推动力.
除此之外,一切都和Laravel一样.
朗文读好
d4n*_*yll 43
Lumen不是为了取代Laravel,而是为微服务和API设计的更专业(和精简)框架.它消除了诸如HTTP会话和cookie之类的API的不必要功能,并且还限制了配置选项的数量.开箱即用,Lumen为了速度而牺牲了Laravel的灵活性.
但是,您可以将Laravel组件添加到Lumen中以扩展它,因此它不仅可用于微服务和API.但是,如果您的目标是将Lumen扩展为网站,那么您最好使用Laravel.
他们也有不同的用例.Lumen和Laravel打算一起工作.对于API和服务经常被调用,使用流明.对于面向用户的应用程序,请使用Laravel.
这个答案来自我写的一篇博文,解释了Lumen和Laravel之间的区别.
Iva*_*kov 14
引自Matt Stauffer
Lumen与Laravel具有相同的基础,并且具有许多相同的组件.但是Lumen是为微服务而构建的,而不是面向面向用户的应用程序(尽管它可以用于任何东西.)因此,像Bootstrap和Elixir这样的前端细节以及身份验证引导和会话都没有开箱即用,并且扩展和更改引导程序文件的灵活性较低.
你可以在这里阅读更多
9.x和Lumen9.x| 特征 | 拉维尔 | 流明 |
|---|---|---|
GET |
Route::get($uri, $callback) |
$router->get($uri, $callback) |
POST |
Route::post($uri, $callback) |
$router->post($uri, $callback) |
PUT |
Route::put($uri, $callback) |
$router->put($uri, $callback) |
PATCH |
Route::patch($uri, $callback) |
$router->patch($uri, $callback) |
DELETE |
Route::delete($uri, $callback) |
$router->delete($uri, $callback) |
OPTION |
Route::option($uri, $callback) |
$router->option($uri, $callback) |
| 多个 HTTP 动词 | Route::match($types, $uri, $callback) |
|
| 所有 HTTP 动词 | Route::any($uri, $callback) |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 基本的 | Route::redirect($from, $to, $status); |
|
| 普雷曼特 | Route::permanentRedirect($from, $to); |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 基本的 | Route::view($from, $to); |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 参数 | ||
| 参数和依赖注入 | ||
| 所需参数 | ||
| 所需参数 | ||
| 正则表达式约束 | ||
| 全局约束 |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 基本的 | Route::get($uri, $callback)->name('profile') |
$router->get($uri, ['as' => 'profile', $callback]) |
| 生成命名路由的 URL | route('profile') |
route('profile') |
| 按名称检查当前路由 | $request->route()->named('profile')布尔值 |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 中间件 | Route::middleware($middleware) |
$router->group(['middleware' => $middleware], $callback) |
| 控制器 | Route::controller(ProfileController::class) |
|
| 子域路由 | Route::domain('{account}.example.com') |
|
| 命名空间 | Route::namespace($namespace) |
$router->group(['namespace' => $namespace], $callback) |
| 路由前缀 | Route::prefix('admin') |
$router->group(['prefix' => 'admin'], $callback) |
| 路由名称前缀 | Route::name('admin.') |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 隐式绑定 | ||
| 隐式枚举绑定 | ||
| 显式绑定 |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 基本的 | Route::fallback() |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 基本的 |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 定义中间件 | artisan make:middleware |
手动的 |
| 全局中间件 | ||
| 将中间件分配给路由 | ||
| 中间件组 | ||
| 中间件参数 | ||
| 可终止中间件 |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 基本的 |
自 Lumen 版本起删除了 CSRF5.2
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 定义控制器 | artisan make:controller |
手动的 |
| 基本的 | ||
| 单动作控制器 | ||
| 控制器中间件 | ||
| 资源控制器 | ||
| 依赖注入和控制器 |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 访问请求 | ||
| 请求路径和方法 | ||
| 请求标头 | ||
| 请求IP地址 | ||
| 内容协商 | ||
| PSR-7 请求 | ||
| 检索输入 | ||
| 确定输入是否存在 | ||
| 合并附加输入 | ||
| 旧输入 | ||
| 饼干 | ||
| 输入修整和标准化 | ||
| 检索上传的文件 | ||
| 移动上传的文件 |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 将标头附加到响应 | ||
| 将 Cookie 附加到响应 | ||
| 重定向 | ||
| 查看回复 | ||
| JSON 响应 | ||
| 文件下载 | ||
| 文件回应 |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 基本的 | ||
| 刀刃 |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 基本的 |
自 Lumen 版本以来,会话已删除5.2
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 基本的 | ||
| 表格请求 | ||
方法$this->validate |
Lumen 中可用的帮助程序$this->validate将始终返回带有相关错误消息的 JSON 响应。这与该方法的 Laravel 版本形成对比,如果请求不是 AJAX 请求,该方法将返回重定向响应。由于 Lumen 是无状态的并且不支持会话,因此不可能向会话闪现错误。validate与 Laravel 不同,Lumen 提供从 Route 闭包内访问该方法的方法。 |
|
与规则existsunique |
如果您想使用exists或unique验证规则,您应该取消文件$app->withEloquent()中方法调用的注释bootstrap/app.php。 |
|
视图$errors变量 |
Lumen 不支持开箱即用的会话,因此$errorsLaravel 中每个视图中可用的视图变量在 Lumen 中不可用。如果验证失败,$this->validate帮助程序将抛出Illuminate\Validation\ValidationException嵌入的 JSON 响应,其中包括所有相关的错误消息。 |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 错误 | ||
| 记录 |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 运行命令 | ||
| 编写命令 |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 基本的 |
在使用Cache外观之前,请确保您已取消文件$app->withFacades()中方法调用的注释bootstrap/app.php。
在将 Redis 缓存与 Lumen 一起使用之前,您需要illuminate/redis通过 Composer 安装该软件包。Illuminate\Redis\RedisServiceProvider然后,您应该在您的文件中注册bootstrap/app.php:
$app->register(Illuminate\Redis\RedisServiceProvider::class);
Run Code Online (Sandbox Code Playgroud)
如果您还没有调用$app->withEloquent()您的bootstrap/app.php文件,那么您应该调用$app->configure('database');该bootstrap/app.php文件以确保 Redis 数据库配置已正确加载。
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 混合 |
| 特征 | 拉维尔 | 流明 |
|---|---|---|
| 基本的 |
在 Lumen 中,没有生成器命令来为您生成事件和侦听器,因此您只需复制ExampleEvent或ExampleListener类来定义您自己的事件和侦听器。这些示例类提供了每个事件和侦听器的基本结构。
与完整的 Laravel 框架一样,EventServiceProviderLumen 应用程序中包含的框架提供了一个方便的位置来注册所有事件侦听器。该listen属性包含所有事件(键)及其侦听器(值)的数组。当然,您可以根据应用程序的需要向此数组添加任意数量的事件:
protected $listen = [
'App\Events\ExampleEvent' => [
'App\Listeners\ExampleListener',
],
];
Run Code Online (Sandbox Code Playgroud)
您可以使用event辅助函数或Event外观在整个 Lumen 应用程序中触发事件。同样,这些函数的行为与完整的 Laravel 框架等效:
event(new ExampleEvent);
Event::dispatch(new ExampleEvent);
Run Code Online (Sandbox Code Playgroud)