环境准备与安装
在开始构建Laravel应用前,需要确保系统满足以下要求:
– PHP 8.0或更高版本
– Composer依赖管理工具
– 数据库服务(MySQL/PostgreSQL/SQLite)
– 基础命令行操作能力
使用Composer全局安装Laravel安装器:
composer global require laravel/installer
创建新项目:
laravel new my-first-app
环境变量配置是Laravel的重要特性,项目根目录的.env
文件存储数据库连接、应用密钥等敏感信息。安装后立即执行:
php artisan key:generate
项目结构解析
Laravel采用约定优于配置原则,其标准目录结构包含:
app/
:核心业务逻辑Http/Controllers
:控制器存放位置Models
:Eloquent模型
database/
:数据库迁移和种子文件resources/
:视图和前端资源routes/
:所有路由定义
现代Laravel项目通常采用领域驱动设计(DDD)变体结构,可通过以下命令创建自定义命名空间:
php artisan make:model Product -mcr
该命令会同时生成模型、迁移、控制器三个文件。
路由与控制器
基础路由定义
在routes/web.php
中定义基本路由:
Route::get('/products', function () {
return view('products.index');
});
控制器路由
创建资源控制器:
php artisan make:controller ProductController --resource
对应路由定义:
Route::resource('products', ProductController::class);
RESTful设计是Laravel的核心路由哲学,上述代码会自动生成7个标准路由:
– GET /products → index()
– GET /products/create → create()
– POST /products → store()
– 其他标准方法…
数据库与Eloquent ORM
迁移文件
创建产品表迁移:
php artisan make:migration create_products_table
典型迁移结构:
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->text('description');
$table->decimal('price', 8, 2);
$table->timestamps();
});
执行迁移:
php artisan migrate
Eloquent模型
基础模型定义:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
protected $fillable = ['name', 'description', 'price'];
public function scopeExpensive($query)
{
return $query->where('price', '>', 100);
}
}
批量赋值保护通过$fillable
或$guarded
属性实现,这是Laravel的重要安全特性。
视图与Blade模板
基础模板继承
resources/views/layouts/app.blade.php
:
<!DOCTYPE html>
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
@include('partials.header')
@yield('content')
</body>
</html>
子视图通过@extends
继承:
@extends('layouts.app')
@section('title', 'Product List')
@section('content')
<h1>Products</h1>
@foreach($products as $product)
<div>{{ $product->name }}</div>
@endforeach
@endsection
组件系统
现代Laravel推荐使用Blade组件:
<x-alert type="error" :message="$message"/>
创建组件:
php artisan make:component Alert
表单验证与请求处理
表单请求验证
创建独立请求类:
php artisan make:request StoreProductRequest
验证规则定义:
public function rules()
{
return [
'name' => 'required|string|max:255',
'price' => 'required|numeric|min:0',
'description' => 'nullable|string'
];
}
控制器中使用:
public function store(StoreProductRequest $request)
{
$validated = $request->validated();
Product::create($validated);
}
验证规则支持超过90种内置验证器,包括条件验证、数组验证等复杂场景。
用户认证系统
Laravel提供完整的认证脚手架:
php artisan make:auth
现代版本推荐使用Laravel Breeze或Jetstream:
composer require laravel/breeze --dev
php artisan breeze:install
npm install && npm run dev
php artisan migrate
认证控制器位于app/Http/Controllers/Auth
目录,包含:
– 注册逻辑
– 登录验证
– 密码重置
– 邮箱验证
测试与部署
PHPUnit测试
基础功能测试示例:
public function test_product_creation()
{
$response = $this->post('/products', [
'name' => 'Test Product',
'price' => 99.99
]);
$response->assertStatus(302);
$this->assertDatabaseHas('products', [
'name' => 'Test Product'
]);
}
部署准备
关键部署步骤:
1. 配置生产环境.env
2. 优化自动加载:
composer install --optimize-autoloader --no-dev
-
缓存路由和配置:
php artisan config:cache php artisan route:cache
生产环境优化还包括:
– 使用OPcache
– 配置队列 worker
– 设置任务调度
现代实践与扩展
API开发
创建API资源:
php artisan make:resource ProductResource
定义转换逻辑:
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'price' => $this->price,
'links' => [
'self' => route('products.show', $this->id)
]
];
}
前端集成
Vue/React集成方案:
1. 使用Inertia.js
2. 通过Laravel Mix编译资源
3. 采用Livewire实现实时交互
// webpack.mix.js
mix.js('resources/js/app.js', 'public/js')
.postCss('resources/css/app.css', 'public/css');
性能优化策略
缓存机制
数据库查询缓存:
$products = Cache::remember('all-products', 3600, function () {
return Product::all();
});
延迟加载优化
解决N+1查询问题:
// 低效方式
$products = Product::all();
foreach($products as $product) {
echo $product->category->name;
}
// 优化方式
$products = Product::with('category')->get();
Eager Loading是ORM性能优化的关键手段,可通过Laravel Debugbar等工具监控查询性能。