Laravel: Laravel简介与环境准备
Laravel 是全球最流行的 PHP 框架——它用优雅的语法让 Web 开发变得高效愉悦,就像从手写信进化到了电子邮件。
1. 你将学到
- Laravel 11 的版本特性与生态全景
- PHP 8.2+ 环境要求与 Composer 包管理器
- Docker 开发环境:Laravel Sail vs Laravel Herd
- 创建首个项目 ShopMetrics
- Laravel 目录结构解析
2. 一个创业者真实的故事
(1) 痛点:手动维护电商分析脚本
Bob 是一名独立开发者,他为 5 个电商客户手动维护着 20 多个 PHP 分析脚本——每次客户要新报表,他都要从零写 SQL、拼 HTML、处理文件上传。上个月,Alice 的店铺需要新增订阅计费功能,Bob 通宵 3 天才交付,代码散落在 15 个文件夹里,连他自己都找不到逻辑在哪。Charlie 更惨,他试着用原生 PHP 写了个 API,结果 2000 行代码里全是 SQL 注入漏洞。
(2) Laravel 的解法
Laravel 用一套优雅的约定,把路由、数据库、认证、队列这些重复劳动全部封装成现成的工具。Bob 只需定义好模型和路由,CRUD 页面、API 接口、用户认证都能自动生成。
# Create project in 30 seconds
composer create-project laravel/laravel ShopMetrics
cd ShopMetrics
php artisan serve
# Visit http://localhost:8000 — your app is running!
(3) 收益
Bob 用 Laravel 重写 ShopMetrics 后,新增一个数据报表从 3 天缩短到 3 小时,代码量减少 70%,Alice 的订阅功能只用了 2 天就上线了。
3. Laravel 是什么
Laravel 是一个基于 PHP 的开源 Web 框架,由 Taylor Otwell 于 2011 年创建,遵循 MVC 架构模式,以"优雅语法"和"开发者体验"著称。
graph LR
A[Laravel Framework] --> B[Routing]
A --> C[Eloquent ORM]
A --> D[Blade Templates]
A --> E[Authentication]
A --> F[Queue System]
A --> G[Event Broadcasting]
A --> H[Artisan Console]
(1) 核心设计理念
- 约定优于配置:遵循约定即可少写代码,需要自定义时再覆盖
- 优雅语法:用流畅的链式调用替代冗长的过程式代码
- 全栈方案:从路由到部署,一套框架覆盖所有需求
(2) Laravel 11 新特性
| 特性 | 说明 |
|---|---|
| 精简目录结构 | 移除 app/Http/Kernel.php 等 9 个文件 |
| 更轻量的 bootstrap | bootstrap/app.php 一文件配置中间件和异常 |
| 默认使用 SQLite | 开箱即用,无需配置 MySQL |
| Per-second Rate Limiting | 精确到秒的限流 |
| Scout 搜索改进 | 支持全文搜索和向量搜索 |
4. Laravel 生态全景
Laravel 不仅有核心框架,还有一整套官方工具链,覆盖从开发到部署的全流程。
| 工具 | 用途 | 说明 |
|---|---|---|
| Forge | 服务器管理 | 一键部署到 DigitalOcean/Vultr |
| Vapor | Serverless 部署 | 基于 AWS Lambda 的无服务器方案 |
| Nova | 后台面板 | 官方 CMS/Admin Panel |
| Sail | Docker 开发环境 | 内置 Docker Compose 配置 |
| Herd | 本地开发环境 | macOS/Windows 原生 PHP 运行环境 |
| Breeze | 认证脚手架 | 轻量级登录/注册模板 |
| Sanctum | API 认证 | SPA + Token 双模式认证 |
| Echo | 实时广播 | WebSocket 事件推送前端库 |
▶ 示例:查看 Laravel 版本和生态工具
# Check Laravel version
php artisan --version
# Output: Laravel Framework 11.x
# Check installed packages via Composer
composer show | grep laravel
# laravel/framework
# laravel/sail
# laravel/sanctum
# laravel/tinker
输出:
# 命令执行成功
5. 环境搭建
(1) PHP 8.2+ 与 Composer
Laravel 11 要求 PHP 8.2 以上版本。Composer 是 PHP 的包管理器,类似 Node.js 的 npm。
| 要求 | 最低版本 | 推荐版本 |
|---|---|---|
| PHP | 8.2 | 8.3 |
| Composer | 2.0 | 2.8+ |
| 扩展:Ctype | ✅ | ✅ |
| 扩展:cURL | ✅ | ✅ |
| 扩展:DOM | ✅ | ✅ |
| 扩展:MBstring | ✅ | ✅ |
| 扩展:OpenSSL | ✅ | ✅ |
| 扩展:PDO | ✅ | ✅ |
| 扩展:Tokenizer | ✅ | ✅ |
▶ 示例:安装 Composer 并验证环境
# Install Composer (macOS/Linux)
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
# Verify PHP and Composer versions
php -v
# PHP 8.3.x (cli)
composer -V
# Composer version 2.8.x
输出:
{"status":"ok","data":{}}
(2) Docker 方案:Laravel Sail vs Laravel Herd
| 维度 | Laravel Sail | Laravel Herd |
|---|---|---|
| 原理 | Docker 容器 | 原生 PHP + Nginx |
| 平台 | Win/Mac/Linux | Mac/Windows |
| 性能 | 较慢(容器开销) | 快(原生运行) |
| 隔离性 | 完全隔离 | 部分隔离 |
| 适合 | 团队统一环境 | 个人快速开发 |
| 启动时间 | 30-60s | 5s |
▶ 示例:使用 Laravel Sail 启动项目
# Create project with Sail
curl -s https://laravel.build/ShopMetrics | bash
cd ShopMetrics
# Start all services (MySQL, Redis, MeiliSearch...)
./vendor/bin/sail up -d
# Run Artisan commands inside Sail
./vendor/bin/sail artisan migrate
输出:
{"status":"ok","data":{}}
▶ 示例:使用 Laravel Herd 启动项目
# After installing Herd from laravelherd.com
# Herd auto-detects projects in ~/Herd or ~/Sites
cd ~/Herd
composer create-project laravel/laravel ShopMetrics
cd ShopMetrics
# Herd auto-provisions .test domain
# Visit: http://ShopMetrics.test
输出:
# 命令执行成功
6. 创建 ShopMetrics 项目
(1) 使用 Composer 创建项目
composer create-project laravel/laravel ShopMetrics
cd ShopMetrics
(2) 目录结构解析
ShopMetrics/
├── app/ # Application core code
│ ├── Http/ # Controllers, Middleware, Requests
│ ├── Models/ # Eloquent ORM models
│ └── Providers/ # Service providers
├── bootstrap/ # Framework bootstrap files
├── config/ # Configuration files
├── database/ # Migrations, Seeders, Factories
├── public/ # Web root (index.php)
├── resources/ # Views, assets, language files
├── routes/ # Route definitions
│ ├── web.php # Web routes
│ └── api.php # API routes
├── storage/ # Logs, cache, compiled files
├── tests/ # PHPUnit/Pest tests
└── vendor/ # Composer dependencies
| 目录 | 职责 | 类比 |
|---|---|---|
app/ |
业务逻辑 | 公司的办公室 |
routes/ |
URL 路由 | 公司的前台接待 |
resources/views/ |
页面模板 | 公司的展厅 |
database/ |
数据结构 | 公司的档案室 |
config/ |
配置参数 | 公司的规章制度 |
public/ |
Web 入口 | 公司的大门 |
▶ 示例:启动开发服务器并访问首页
cd ShopMetrics
# Start the built-in development server
php artisan serve
# Starting Laravel development server: http://127.0.0.1:8000
# Visit http://127.0.0.1:8000 in browser
# You should see the Laravel welcome page
输出:
# 命令执行成功
7. 综合示例:ShopMetrics 项目初始化
# ============================================
# Comprehensive: Initialize ShopMetrics project
# Covers: create project, configure .env, run migrations, serve
# ============================================
# 1. Create the Laravel project
composer create-project laravel/laravel ShopMetrics
cd ShopMetrics
# 2. Configure environment
cp .env.example .env
php artisan key:generate
# Application key set successfully.
# 3. Configure database in .env (using SQLite for quick start)
# DB_CONNECTION=sqlite
# DB_DATABASE=database/database.sqlite
# 4. Run default migrations
php artisan migrate
# Created migration tables: users, password_reset_tokens, etc.
# 5. Start development server
php artisan serve
# Server running on http://127.0.0.1:8000
# 6. Verify installation
php artisan about
# Environment: Local
# Laravel Version: 11.x
# PHP Version: 8.3.x
输出:
Application key set successfully.
Info: Using SQLite database: database/database.sqlite
Migration table created successfully.
Running migrations:
0001_01_01_000000_create_users_table ... done
0001_01_01_000001_create_password_reset_tokens_table ... done
Starting Laravel development server: http://127.0.0.1:8000
❓ 常见问题
php artisan serve 即可。bootstrap/app.php 配置即可。vendor/ 目录),npm 是 Node.js 的包管理器(管理 node_modules/ 目录)。Laravel 同时使用两者:Composer 管理 PHP 依赖,npm 管理前端资源。php artisan about,它会列出 PHP 版本、扩展、数据库驱动等所有环境信息,不满足的会标红提示。📖 小节
- Laravel 是 PHP 最流行的全栈框架,以优雅语法和开发者体验著称
- Laravel 11 精简了目录结构,默认使用 SQLite,降低入门门槛
- Laravel 生态包含 Forge/Vapor/Sail/Herd/Sanctum 等完整工具链
- 环境搭建推荐 Docker(Sail)或原生(Herd),都需要 PHP 8.2+ 和 Composer
- 项目目录遵循 MVC 模式:app/ 存逻辑,routes/ 存路由,resources/ 存视图
php artisan serve可快速启动开发服务器
📝 作业
-
基础题(⭐):在本地安装 PHP 8.2+ 和 Composer,使用
composer create-project创建一个名为 ShopMetrics 的 Laravel 项目,确保能在浏览器中看到欢迎页面。 -
进阶题(⭐⭐):使用 Laravel Sail 或 Docker 方式创建同一个项目,比较
php artisan serve和 Sail 两种启动方式的差异,记录启动时间和内存占用。 -
挑战题(⭐⭐⭐):阅读 Laravel 11 的目录结构变化(对比 Laravel 10),列出被移除的文件及其功能如何在 Laravel 11 中替代实现。