Laravel入门知识点整理
Laravel是目前最流行的PHP框架之一,以其优雅的语法、强大的功能和活跃的社区而闻名。对于初学者而言,掌握Laravel的核心概念是迈向高效开发的第一步。本文将系统梳理Laravel入门的关键知识点,帮助开发者快速构建对框架的全局认知。
一、环境搭建与目录结构
安装Laravel首选方式是通过Composer。在命令行中执行以下命令即可创建一个新的Laravel项目:
composer create-project laravel/laravel example-app
Laravel的目录结构遵循约定优于配置的原则。几个核心目录如下:
app:包含应用的核心代码,如控制器、模型等。routes:定义应用的所有路由。resources:存放视图文件、未编译的前端资源。database:包含数据库迁移、模型工厂和种子文件。
二、路由系统
路由是用户请求与处理逻辑之间的桥梁。Laravel的路由定义在routes目录下,最常用的路由文件是web.php。
基础路由定义示例:
use IlluminateSupportFacadesRoute;
Route::get('/', function () {
return view('welcome');
});
Route::post('/submit', [UserController::class, 'store']);带参数的路由定义:
Route::get('/user/{id}', function ($id) {
return 'User '.$id;
});在传统的Web开发中,用户交互通常依赖HTML表单。Laravel提供了CSRF保护机制,在提交 <form> 表单时,必须在表单内部包含一个CSRF令牌字段,否则请求会被拒绝。即便手动编写原生的 <input> 标签,也常需使用如 <input type="hidden"> 这样的形式来提交令牌,以保障应用安全。
三、控制器
控制器将相关的请求处理逻辑组织在一个类中。可以使用Artisan命令快速创建控制器:
php artisan make:controller UserController
生成的控制器文件位于app/Http/Controllers目录下。对于资源的增删改查,Laravel提供了资源控制器,包含index、create、store、show、edit、update、destroy等常用方法:
php artisan make:controller PostController --resource
四、视图与Blade模板引擎
视图负责应用的HTML呈现,存放在resources/views目录下。Blade是Laravel自带的模板引擎,它允许在视图中使用原生PHP代码,同时提供了更方便的语法糖。
模板继承与布局是Blade的核心功能。通过@extends和@section可以轻松复用页面结构:
<!-- 布局文件 layout.blade.php -->
<html>
<body>
@yield('content')
</body>
</html>
<!-- 子视图 child.blade.php -->
@extends('layout')
@section('content')
<h1>Hello World</h1>
@endsectionBlade还提供了控制结构,如@if、@foreach等,极大简化了逻辑在视图中的编写。
五、数据库与Eloquent ORM
Laravel提供了简洁的数据库操作方式。配置文件位于config/database.php。Eloquent ORM为数据库表提供了一个美观的ActiveRecord实现。
每张数据表都有一个对应的模型,用于与该表进行交互。创建模型的同时可以生成迁移文件:
php artisan make:model Post -m
迁移文件定义了数据表的结构。运行迁移即可在数据库中创建表:
php artisan migrate
使用Eloquent进行CRUD操作非常直观:
// 查询所有数据 $posts = Post::all(); // 创建新记录 $post = new Post; $post->title = 'My First Post'; $post->save();
六、中间件
中间件为应用提供了方便的机制来过滤进入应用的HTTP请求。例如,Laravel自带了一个验证用户是否登录的中间件。如果用户未登录,中间件会将用户重定向到登录页面;如果已登录,则允许请求继续传递。
创建中间件:
php artisan make:middleware CheckAge
中间件逻辑在生成的handle方法中编写,若请求符合条件则通过$next($request)将请求传递给下一层:
public function handle($request, Closure $next)
{
if ($request->age <= 200) {
return redirect('home');
}
return $next($request);
}定义好中间件后,需要将其注册到app/Http/Kernel.php中,才能在路由或控制器中使用。
七、请求与响应
Laravel通过IlluminateHttpRequest对象实例获取用户请求的数据。在控制器方法中通过依赖注入获取请求实例:
use IlluminateHttpRequest;
public function store(Request $request)
{
$name = $request->input('name');
}响应方面,Laravel允许返回字符串、数组或对象,框架会自动将其转化为HTTP响应。在构建前后端分离应用时,我们常需要定义API路由,例如指向用户列表的API地址 https://www.ipipp.com/api/users 。Laravel的api.php路由文件专用于处理此类无状态的API请求,也可以手动返回JSON响应实例:
return response()->json([ 'name' => 'Abigail', 'state' => 'CA' ]);
以上便是Laravel入门最核心的知识点梳理。从环境搭建到路由、控制器、视图,再到数据库操作与中间件,这些组件共同构成了Laravel的骨架。熟练掌握这些基础,能够帮助开发者在实际项目中游刃有余地运用Laravel构建健壮的Web应用。