Laravel: Laravel简介与环境准备

Laravel 是全球最流行的 PHP 框架——它用优雅的语法让 Web 开发变得高效愉悦,就像从手写信进化到了电子邮件。

1. 你将学到


2. 一个创业者真实的故事

(1) 痛点:手动维护电商分析脚本

Bob 是一名独立开发者,他为 5 个电商客户手动维护着 20 多个 PHP 分析脚本——每次客户要新报表,他都要从零写 SQL、拼 HTML、处理文件上传。上个月,Alice 的店铺需要新增订阅计费功能,Bob 通宵 3 天才交付,代码散落在 15 个文件夹里,连他自己都找不到逻辑在哪。Charlie 更惨,他试着用原生 PHP 写了个 API,结果 2000 行代码里全是 SQL 注入漏洞。

(2) Laravel 的解法

Laravel 用一套优雅的约定,把路由、数据库、认证、队列这些重复劳动全部封装成现成的工具。Bob 只需定义好模型和路由,CRUD 页面、API 接口、用户认证都能自动生成。

BASH
# 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 架构模式,以"优雅语法"和"开发者体验"著称。

100%
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 版本和生态工具

BASH
# 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

输出:

TEXT 📖 仅展示
# 命令执行成功

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 并验证环境

BASH
# 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

输出:

TEXT 📖 仅展示
{"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 启动项目

BASH
# 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

输出:

TEXT 📖 仅展示
{"status":"ok","data":{}}

▶ 示例:使用 Laravel Herd 启动项目

BASH
# 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

输出:

TEXT 📖 仅展示
# 命令执行成功

6. 创建 ShopMetrics 项目

(1) 使用 Composer 创建项目

BASH
composer create-project laravel/laravel ShopMetrics
cd ShopMetrics

(2) 目录结构解析

TEXT 📖 仅展示
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 入口 公司的大门

▶ 示例:启动开发服务器并访问首页

BASH
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

输出:

TEXT 📖 仅展示
# 命令执行成功

7. 综合示例:ShopMetrics 项目初始化

BASH
# ============================================
# 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

输出:

TEXT 📖 仅展示
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

❓ 常见问题

Q Laravel 和 CodeIgniter 有什么区别?
A Laravel 是全栈框架,内置 ORM/认证/队列/广播;CodeIgniter 是轻量框架,只提供路由和基础 MVC,其他需自行组装。Laravel 适合中大型项目,CodeIgniter 适合小型项目。
Q 必须用 Docker 吗?
A 不是必须的。Docker(Sail)适合团队统一环境,Laravel Herd 适合个人快速开发。如果已有 PHP 8.2+ 环境,直接 php artisan serve 即可。
Q Laravel 11 和 Laravel 10 差别大吗?
A Laravel 11 精简了目录结构和启动流程,但核心 API 变化不大。从 Laravel 10 升级通常只需调整 bootstrap/app.php 配置即可。
Q 为什么推荐 SQLite 作为入门数据库?
A SQLite 无需安装 MySQL/PostgreSQL,开箱即用,适合学习和原型开发。生产环境建议切换到 MySQL 或 PostgreSQL。
Q Composer 和 npm 有什么区别?
A Composer 是 PHP 的包管理器(管理 vendor/ 目录),npm 是 Node.js 的包管理器(管理 node_modules/ 目录)。Laravel 同时使用两者:Composer 管理 PHP 依赖,npm 管理前端资源。
Q 如何判断本地环境是否满足 Laravel 要求?
A 在项目目录运行 php artisan about,它会列出 PHP 版本、扩展、数据库驱动等所有环境信息,不满足的会标红提示。

📖 小节


📝 作业

  1. 基础题(⭐):在本地安装 PHP 8.2+ 和 Composer,使用 composer create-project 创建一个名为 ShopMetrics 的 Laravel 项目,确保能在浏览器中看到欢迎页面。

  2. 进阶题(⭐⭐):使用 Laravel Sail 或 Docker 方式创建同一个项目,比较 php artisan serve 和 Sail 两种启动方式的差异,记录启动时间和内存占用。

  3. 挑战题(⭐⭐⭐):阅读 Laravel 11 的目录结构变化(对比 Laravel 10),列出被移除的文件及其功能如何在 Laravel 11 中替代实现。

Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏