Laravel 11 简介

Laravel 是一个基于 PHP 的开源 Web 框架,采用 MVC(模型-视图-控制器) 架构,致力于提供优雅、简洁的代码语法。 Laravel 11(最新稳定版)于 2024 年 3 月发布,它继承了前版本的强大功能,同时进一步简化了项目结构,让开发者能更专注于业务逻辑。

✨ Laravel 的核心特点

  • MVC 架构支持 – 清晰分离业务逻辑、数据和展示层,便于团队协作与维护。
  • Eloquent ORM – 优雅的数据库操作,使用 ActiveRecord 模式实现,让数据查询更直观。
  • Blade 模板引擎 – 轻量且强大的模板引擎,提供模板继承、组件等现代功能。
  • Artisan 命令行工具 – 内置丰富的命令,可快速生成代码、管理数据库迁移等。
  • 数据库迁移与填充 – 版本控制数据库结构,轻松分享和部署数据库更改。
  • 测试辅助 – 底层支持 PHPUnit,并提供了便捷的测试方法,确保应用质量。
  • 安全性 – 自动防护 CSRF、XSS 攻击,提供简洁的认证与授权机制。

🚀 Laravel 11 的新亮点

  • 更简洁的目录结构 – 移除了默认的控制器命名空间前缀,减少了不必要的文件夹,如 Http/Middleware 中的中间件默认移到 app 根命名空间。
  • 无默认控制器命名空间 – 路由文件中不再默认添加 App\Http\Controllers 命名空间,开发者可更灵活组织。
  • API 开发简化 – 提供了更流畅的 API 资源类,支持分页等。
  • 健康检查路由 – 内置 /up 路由,方便负载均衡器检测应用状态。
  • 简化的异常处理 – 大部分异常处理移至 bootstrap/app.php 中配置,减少文件数量。

🔧 环境要求

在安装 Laravel 11 之前,请确保服务器满足以下要求:

  • PHP >= 8.2(并安装以下扩展:Ctype, cURL, DOM, Fileinfo, Filter, Hash, Mbstring, OpenSSL, PCRE, PDO, Session, Tokenizer, XML
  • Composer(PHP 依赖管理工具)
  • 数据库(MySQL ≥ 5.7 / MariaDB ≥ 10.3 / PostgreSQL / SQLite 等)

📦 安装 Laravel 11

推荐使用 Composer 创建新项目:

composer create-project laravel/laravel example-app

或者通过 Laravel 安装器:

# 先全局安装安装器
composer global require laravel/installer

# 然后创建项目
laravel new example-app

安装完成后,进入项目目录并启动开发服务器:

cd example-app
php artisan serve

访问 http://localhost:8000 即可看到 Laravel 欢迎页。

📁 主要目录结构(Laravel 11 简化版)

  • app/ – 应用核心代码(模型、控制器、中间件等)
    • Models/ – 数据模型
    • Http/Controllers/ – 控制器
    • Http/Middleware/ – 中间件
  • bootstrap/ – 框架启动文件,包含 app.php(异常处理、服务提供者配置)
  • config/ – 所有配置文件
  • database/ – 迁移、填充和工厂文件
  • public/ – 入口 index.php 和静态资源(css, js, images)
  • resources/ – 视图(Blade 模板)、语言文件、前端资源(未编译的 CSS/JS)
  • routes/ – 所有路由定义(web.php, api.php, console.php)
  • storage/ – 日志、缓存、编译后的 Blade 模板、用户上传文件
  • tests/ – 单元测试和功能测试

⚡ 快速示例:路由 + 控制器 + 视图

下面通过一个简单的用户列表功能,展示 Laravel 的基本工作流程。

1. 创建控制器

使用 Artisan 命令生成控制器:

php artisan make:controller UserController
2. 编写控制器逻辑(app/Http/Controllers/UserController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User; // 假设存在 User 模型

class UserController extends Controller
{
    public function index()
    {
        $users = User::take(5)->get(); // 获取前5个用户
        return view('users.index', compact('users'));
    }
}
3. 定义路由(routes/web.php
<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;

Route::get('/users', [UserController::class, 'index']);
4. 创建 Blade 视图(resources/views/users/index.blade.php