Laravel 8.x核心特性全面解析

Laravel 8.x 于2020年9月发布,引入了多项重要改进,以下是核心特性详解:

1. Laravel Jetstream

  • 现代化应用脚手架:替代原有认证脚手架

  • 集成技术栈

    php 复制代码
    // 安装命令示例
    composer require laravel/jetstream
    php artisan jetstream:install livewire
  • 支持 LivewireInertia.js 两种前端栈

  • 内置双因素认证、会话管理、API支持

2. 模型工厂类重构

php 复制代码
// 旧版工厂 (基于函数)
$factory->define(App\User::class, function (Faker $faker) {...});

// 新版工厂 (基于类)
class UserFactory extends Factory {
    public function definition() {
        return [
            'name' => $this->faker->name(),
            'email' => $this->faker->unique()->safeEmail(),
        ];
    }
}

3. 迁移压缩

解决迁移文件过多问题:

bash 复制代码
php artisan schema:dump
# 生成 schema/migrations.sql
  • 执行新迁移时优先读取SQL文件
  • 保留未执行迁移的灵活性

4. 任务批处理

php 复制代码
use Illuminate\Bus\Batch;
use App\Jobs\ProcessPodcast;

Batch::dispatch([
    new ProcessPodcast(1),
    new ProcessPodcast(2),
])->then(function (Batch $batch) {
    // 批处理完成回调
})->catch(function (Batch $batch, Throwable $e) {
    // 异常处理
});

5. 路由命名空间调整

  • 移除 RouteServiceProvider 中的默认控制器命名空间
  • 需显式指定完整类名:
php 复制代码
// 原方式
Route::get('/user', 'UserController@index');

// 新方式
use App\Http\Controllers\UserController;
Route::get('/user', [UserController::class, 'index']);

6. 事件监听器优化

  • 自动发现事件监听器
  • 无需在 EventServiceProvider 中手动注册
  • 约定:Listeners 目录下文件自动关联同名事件

7. 速率限制增强

php 复制代码
Route::middleware(['throttle:api'])->group(function () {
    Route::get('/profile', function () {
        // 每分钟60次请求限制
    });
});
  • 支持Redis驱动
  • 自定义限制策略:RateLimiter::for()

8. Blade组件改进

  • 动态组件渲染:
blade 复制代码
<x-dynamic-component :component="$componentName" class="mt-4" />
  • 属性合并:自动合并class属性
  • 内联视图组件:@component 语法简化

9. 时间测试助手

php 复制代码
// 冻结时间
$this->travelTo(now()->subDays(10));

// 时间前进
$this->travel(5)->days();

10. 其他改进

  • 队列 retryUntil() 方法弃用 → 改用 backoff() 属性
  • artisan serve 命令支持热重载
  • assertDeleted() 更名 → assertModelMissing()
  • 默认启用 tailwindcss 替代Bootstrap

升级建议 :使用官方升级工具 laravel-shift 进行平滑迁移,特别注意路由和控制器的命名空间调整。

相关推荐
爱装代码的小瓶子7 分钟前
3. 设计buffer模块
linux·服务器·开发语言·c++·php
狗凯之家源码网1 小时前
APP 软件官网整站源码效果实测与价值解析
开源·php
m0_738120721 小时前
渗透测试基础——PHP 序列化数据结构与反序列化机制详解
android·服务器·网络·数据结构·安全·php
AC赳赳老秦1 小时前
用 OpenClaw 制定技术学习计划:根据目标岗位自动生成学习路线、推荐学习资源
开发语言·c++·人工智能·python·mysql·php·openclaw
宁小法3 小时前
Redis evalsha 可能返回的错误类型
redis·php·lua报错
祁白_3 小时前
PHP回调函数
web安全·php·ctf·代码审计·writeup
着迷不白4 小时前
七、Linux网络管理
服务器·网络·php
隔窗听雨眠5 小时前
VMware迁移上云的十个关键关卡
开发语言·php·vmware
无涯大者5 小时前
php中redis的简单示例学习
redis·学习·php
爱和冰阔落5 小时前
Ollama 本地大模型部署实战:从安装到 RAG 知识库完整指南
开发语言·大模型·php·ollama