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

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

1. Laravel Jetstream

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

  • 集成技术栈 :

    php 复制代码
    // 安装命令示例
    composer require laravel/jetstream
    php artisan jetstream:install livewire
  • 支持 Livewire 和 Inertia.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 进行平滑迁移,特别注意路由和控制器的命名空间调整。

相关推荐
普通人61 小时前
PHP文件读写完全指南
开发语言·php·1024程序员节
vipxieliang6 小时前
ThinkORM 3.0 入门:强类型模型定义与查询构造器
后端·php·thinkphp
vipxieliang6 小时前
PHP 密码哈希与 password_hash 最佳实践
后端·php
云和数据.ChenGuang18 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
大白玉米1 天前
MoxPlayer 弹幕播放器源码智能解析线路管理系统自研内核
php
测试界的小码农2 天前
【Linux 命令实战(03):文件创建、复制、移动与删除,掌握 touch、mkdir、cp、mv、rm】
linux·服务器·php
叼烟扛炮2 天前
Linux 学习笔记(五十九):epoll 的生死抉择——LT 与 ET 模式
linux·运维·服务器·网络·笔记·学习·php
叼烟扛炮3 天前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
zhikouai3 天前
把外部助手接进聊天软件的架构分层与参数配置
服务器·网络·php
叼烟扛炮3 天前
Linux 学习笔记(五十八):IO 多路复用封神——epoll 底层原理揭秘
linux·运维·服务器·网络·笔记·学习·php