引言
Laravel 是一款流行的 PHP 开发框架,以其优雅的语法、丰富的功能以及强大的社区支持而受到开发者的喜爱。本文将带领您从零开始,通过实战项目教程,轻松入门 Laravel,并掌握其核心技巧。
第一章:环境搭建
1.1 安装 PHP 和 Composer
首先,确保您的计算机上已安装 PHP 和 Composer。您可以从 PHP 官网下载 PHP 安装包,并按照官方文档进行安装。
# 安装 PHP
wget https://windows.php.net/download/php-7.4.29 windows/php-7.4.29/php-7.4.29.zip
unzip php-7.4.29.zip
cd php-7.4.29
./configure --prefix=/usr/local/php --enable-fpm
make
sudo make install
# 安装 Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
1.2 安装 Laravel 框架
使用 Composer 创建一个新的 Laravel 项目:
composer global require laravel/installer
laravel new project-name
进入项目目录:
cd project-name
第二章:Laravel 快速入门
2.1 目录结构
Laravel 项目的目录结构如下:
project-name/
├── app/
│ ├── Console/
│ ├── Http/
│ │ ├── Controllers/
│ │ ├── Middleware/
│ │ ├── Routes/
│ │ └── Views/
│ ├── Database/
│ ├── Resources/
│ ├── Storage/
│ ├── vendor/
│ ├── .env
│ ├── .env.example
│ ├── .gitignore
│ ├── app.php
│ ├── bootstrap/
│ │ ├── app.php
│ │ ├── cache.php
│ │ ├── config.php
│ │ ├── database.php
│ │ ├── event.php
│ │ ├── filesystem.php
│ │ ├── hash.php
│ │ ├── routes.php
│ │ ├── session.php
│ │ ├── view.php
│ ├── config/
│ ├── database/
│ ├── migrations/
│ ├── package.json
│ ├── package-lock.json
│ ├── public/
│ ├── routes/
│ ├── storage/
│ ├── vendor/
│ ├── web.php
│ └── yarn.lock
2.2 创建控制器
在 app/Http/Controllers 目录下创建一个控制器:
php artisan make:controller HomeController
编辑 HomeController.php 文件,添加一个路由:
public function index()
{
return 'Hello, Laravel!';
}
在 routes/web.php 文件中添加路由:
Route::get('/', function () {
return view('welcome');
});
2.3 创建视图
在 resources/views 目录下创建一个视图:
php artisan make:view welcome
编辑 welcome.blade.php 文件,添加内容:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Laravel</title>
</head>
<body>
<h1>Hello, Laravel!</h1>
</body>
</html>
2.4 运行项目
启动 Laravel 服务器:
php artisan serve
在浏览器中访问 http://localhost:8000,您将看到欢迎页面。
第三章:Laravel 核心技巧
3.1 Eloquent ORM
Laravel 的 Eloquent ORM 是一款强大的对象关系映射工具,可以简化数据库操作。以下是一个简单的 Eloquent 模型示例:
php artisan make:model Post
编辑 app/Models/Post.php 文件:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = ['title', 'content'];
}
创建迁移文件:
php artisan make:migration create_posts_table
编辑迁移文件,添加字段:
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
运行迁移:
php artisan migrate
创建一个控制器来处理 CRUD 操作:
php artisan make:controller PostController
编辑 PostController.php 文件,添加方法:
public function index()
{
$posts = Post::all();
return view('posts.index', compact('posts'));
}
public function create()
{
return view('posts.create');
}
public function store(Request $request)
{
$post = new Post();
$post->fill($request->all());
$post->save();
return redirect()->route('posts.index');
}
public function show($id)
{
$post = Post::find($id);
return view('posts.show', compact('post'));
}
public function edit($id)
{
$post = Post::find($id);
return view('posts.edit', compact('post'));
}
public function update(Request $request, $id)
{
$post = Post::find($id);
$post->fill($request->all());
$post->save();
return redirect()->route('posts.show', $post);
}
public function destroy($id)
{
$post = Post::find($id);
$post->delete();
return redirect()->route('posts.index');
}
创建视图:
php artisan make:view posts/index
php artisan make:view posts/create
php artisan make:view posts/edit
php artisan make:view posts/show
编辑视图文件,添加内容。
3.2 中间件
中间件是 Laravel 中用于处理 HTTP 请求的代码片段。以下是一个简单的中间件示例:
php artisan make:middleware CheckAge
编辑 CheckAge.php 文件:
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
public function handle($request, Closure $next)
{
if ($request->age < 18) {
return response('You must be at least 18 years old.', 403);
}
return $next($request);
}
}
注册中间件:
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\CheckAge::class,
],
];
3.3 路由模型绑定
路由模型绑定允许您在路由中使用模型实例,而不是模型 ID。以下是一个示例:
Route::get('/posts/{post}', function (Post $post) {
return $post;
});
3.4 事件系统
Laravel 的事件系统允许您在应用程序中监听和触发事件。以下是一个示例:
php artisan make:event UserRegistered
php artisan make:listener UserRegisteredHandler
Event::listen('user.registered', function ($user) {
// Handle the event
});
3.5 集成测试
Laravel 提供了一个强大的集成测试框架,可以轻松编写测试用例。以下是一个示例:
php artisan make:test UserTest
编辑 UserTest.php 文件:
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\User;
class UserTest extends TestCase
{
public function test_user_can_register()
{
$response = $this->json('POST', '/register', [
'name' => 'John Doe',
'email' => 'john@example.com',
'password' => 'password',
]);
$response
->assertStatus(201)
->assertJsonFragment(['name' => 'John Doe']);
}
}
运行测试:
php artisan test
总结
通过本文的实战项目教程,您已经从零开始学习了 Laravel 框架,并掌握了其核心技巧。希望这些知识能够帮助您在 PHP 开发领域取得更大的进步。祝您学习愉快!
