Laravel9.x核心特性全解析

好的,以下是针对 Laravel 9.x 版本的一些核心概念和常见操作的解答,采用清晰的结构:

Laravel 9.x 核心特性与解答

Laravel 9 是一个重要的长期支持版本 (LTS),引入了多项改进和新功能。以下是一些关键方面:

1. 环境要求
  • PHP 版本:Laravel 9.x 要求 PHP >= 8.0
  • Composer:用于依赖管理。
2. 路由 (Routing)

Laravel 的路由系统是其核心。在 routes/web.phproutes/api.php 中定义路由。

php 复制代码
// 基本 GET 路由
Route::get('/welcome', function () {
    return view('welcome');
});

// 路由到控制器方法
Route::get('/users', [UserController::class, 'index']);

// 带参数的路由
Route::get('/user/{id}', [UserController::class, 'show']);

// 路由命名 (方便生成 URL 或重定向)
Route::get('/user/profile', [UserController::class, 'profile'])->name('profile');
3. 控制器 (Controllers)

控制器用于组织处理请求的逻辑。使用 Artisan 命令创建:

bash 复制代码
php artisan make:controller UserController

示例控制器方法:

php 复制代码
<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        $users = User::all(); // 获取所有用户
        return view('users.index', ['users' => $users]);
    }

    public function show($id)
    {
        $user = User::findOrFail($id); // 查找用户或失败返回 404
        return view('users.show', ['user' => $user]);
    }
}
4. Eloquent ORM (数据库模型)

Eloquent 是 Laravel 的活动记录 ORM。定义模型:

bash 复制代码
php artisan make:model User

模型文件 app/Models/User.php (Laravel 9 默认模型放在 Models 目录下):

php 复制代码
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    // 默认表名是模型名的复数形式 (users)
    // protected $table = 'my_users'; // 自定义表名

    // 定义可批量赋值的字段
    protected $fillable = ['name', 'email'];

    // 定义需要隐藏的字段 (例如密码)
    protected $hidden = ['password'];
}

查询示例:

php 复制代码
// 获取所有用户
$users = User::all();

// 根据主键查找
$user = User::find(1);

// 条件查询
$activeUsers = User::where('active', 1)->orderBy('name')->get();

// 保存新用户
$user = new User;
$user->name = 'John Doe';
$user->email = 'john@example.com';
$user->save();

// 更新用户
$user = User::find(1);
$user->name = 'Jane Doe';
$user->save();

// 删除用户
$user = User::find(1);
$user->delete();
5. 视图 (Blade Templates)

Blade 是 Laravel 的模板引擎。视图文件通常位于 resources/views 目录。

基本数据传递与显示 (users/index.blade.php):

php 复制代码
<html>
<body>
    <h1>Users</h1>
    <ul>
        @foreach ($users as $user)
            <li>{{ $user->name }} - {{ $user->email }}</li>
        @endforeach
    </ul>
</body>
</html>
6. 表单处理 & 验证

处理表单提交和验证数据。

php 复制代码
// 在控制器中处理 POST 请求
public function store(Request $request)
{
    // 验证请求数据
    $validated = $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users|max:255',
        'password' => 'required|min:8',
    ]);

    // 验证通过,创建用户
    $user = User::create($validated);

    // 重定向到用户列表页
    return redirect()->route('users.index');
}
7. 依赖注入

Laravel 的服务容器自动解析依赖。例如在控制器构造函数或方法中注入 Request 或自定义服务。

php 复制代码
public function store(Request $request, UserService $userService)
{
    // 使用 $request 获取输入
    // 使用 $userService 处理业务逻辑
}
8. 数据库迁移 (Migrations)

迁移用于定义和修改数据库结构。创建迁移:

bash 复制代码
php artisan make:migration create_users_table

编辑迁移文件 (database/migrations/xxxx_create_users_table.php):

php 复制代码
public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id(); // 主键 ID
        $table->string('name'); // VARCHAR 类型
        $table->string('email')->unique(); // 唯一索引
        $table->string('password');
        $table->timestamps(); // 创建 created_at 和 updated_at 时间戳
    });
}

public function down()
{
    Schema::dropIfExists('users');
}

运行迁移:

bash 复制代码
php artisan migrate

回滚迁移:

bash 复制代码
php artisan migrate:rollback
9. Artisan 命令行工具

Artisan 是 Laravel 的命令行接口,用于执行各种任务。

  • php artisan list:查看所有可用命令。
  • php artisan make:model ModelName -m:创建模型并同时生成迁移文件 (-m)。
  • php artisan make:controller PhotoController --resource:创建资源控制器。
  • php artisan tinker:进入交互式 REPL 环境,用于测试 Eloquent 查询等。

总结

Laravel 9.x 提供了强大的功能集用于构建现代 Web 应用程序。以上涵盖了路由、控制器、模型 (Eloquent)、视图 (Blade)、表单验证、依赖注入、数据库迁移和 Artisan 命令行等核心方面。具体开发时,请务必参考 Laravel 9.x 官方文档 以获取最准确和详细的信息。

相关推荐
BoomHe3 小时前
Android Framework 文件应用移植到 AndroidStudio
android
传奇开心果编程5 小时前
【Jetpack Compose基础语法学与练】第8课 rememberSaveable,页面旋转/系统重建保留状态
android·学习·ui·kotlin·android jetpack
>Andre<5 小时前
UFS5.0标准中文全译·卷一:范围、术语与架构
android·linux·嵌入式硬件
事圆则缓6 小时前
Java 8 Lambda、Stream、Optional 与 Android 边界:从回调语法到运行时兼容
android·java
mmsx6 小时前
Android 地图十万要素不卡顿:空间网格 + 渐进式加载的移动端实践
android·大数据·opengl
Godikov8 小时前
Android 工业终端保活实战:前台服务 + 开机自启 + 更新自启的三重保障
android
字节暗面8 小时前
SO加固强度怎么量化?腾讯ACE与FairGuard静态分析实测
android·逆向
终端安全笔记9 小时前
描述文件、企业证书、MDM 不是三个名字,是三层
android·ios·智能手机
字节暗面10 小时前
一次游戏安全SO静态分析记录:腾讯ACE与FairGuard加固强度对比
android·逆向工程·游戏加固
传奇开心果编程10 小时前
【Jetpack Compose基础语法学与练】第9课 SideEffect副作用 + LaunchedEffect,处理异步任务和生命周期
android·学习·ui·kotlin·android jetpack