PHP Laravel框架架构
1.根目录结
├── app/
├── artisan
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── tests/
├── .env
├── .gitignore
├── composer.json
├── package.json
├── phpunit.xml
└── README.md
2. 重要目录和文件说明
1. app/ 目录
app/
目录是 Laravel 应用程序的核心所在,包含了应用的核心逻辑和业务代码。
-
app/Console/
: 包含 Artisan 命令的定义。Artisan 是 Laravel 的命令行工具,可以用于创建和管理应用程序的各种命令。Console
目录用于存放命令类。- 例如:
app/Console/Commands/
用于存放自定义 Artisan 命令。
- 例如:
-
app/Exceptions/
: 用于存放异常处理类。Laravel 默认的Handler.php
在此处,负责处理应用程序的异常。 -
app/Http/
: 包含 HTTP 请求的相关逻辑,包括控制器、路由和中间件。-
Controllers/
:控制器目录,存放所有的控制器类,处理应用程序的业务逻辑。 -
Middleware/
:中间件目录,存放应用中的中间件类,用来过滤 HTTP 请求。 -
Requests/
:表单请求类目录,用于定义表单请求的验证规则和授权逻辑。
-
-
app/Models/
: 存放 Eloquent ORM 模型类。Laravel 的 ORM(对象关系映射)工具 Eloquent 用来和数据库交互,所有数据库表对应的模型类都放在这里。- 例如:
Product.php
对应products
表。
- 例如:
-
app/Providers/
: 存放服务提供者类。服务提供者负责绑定应用程序的服务容器,注册应用所需的各种服务。
2. bootstrap/ 目录
bootstrap/
目录包含了框架启动所需的文件。
-
app.php
:这是 Laravel 的启动文件,所有的服务提供者和中间件等都在这里被加载。该文件通常会初始化框架并处理一些基本配置。 -
cache/
:用于存放框架的缓存文件,包含了应用程序的配置缓存、路由缓存等。
3. config/ 目录
config/
目录包含了所有应用的配置文件。这里的配置文件让开发者可以调整和定制应用的各种设置。
-
app.php
:应用程序的基本配置,如应用名称、时区、语言、加密密钥等。 -
database.php
:数据库连接的配置文件,包括数据库的连接信息(如 MySQL、PostgreSQL)等。 -
mail.php
:邮件服务配置。 -
queue.php
:队列配置。 -
services.php
:第三方服务(如支付接口、云存储服务等)的配置。
4. database/ 目录
database/
目录包含与数据库相关的文件。
-
migrations/
:数据库迁移文件。迁移文件用于管理数据库结构的更改,比如创建表、修改表等。- 例如:
2021_10_15_000000_create_users_table.php
用于创建users
表。
- 例如:
-
factories/
:数据库工厂文件,用于为模型生成假数据。通常用于填充数据库或生成测试数据。- 例如:
ProductFactory.php
用于生成产品模型的假数据。
- 例如:
-
seeders/
:数据库填充文件。它用于在数据库中插入初始数据。可以通过 Artisan 命令运行填充器。- 例如:
ProductSeeder.php
用于填充产品数据表。
- 例如:
5. public/ 目录
public/
目录是应用程序的公共访问入口,通常包含静态资源文件和前端资产。
-
index.php
:所有的 HTTP 请求都会通过这个文件来进入 Laravel 应用程序,这是 Web 请求的入口文件。 -
css/
、js/
、images/
:存放 CSS、JavaScript 和图片等静态资源文件。通常你会将前端框架和库(如 Bootstrap、Vue.js 等)放在这些目录中。
6. resources/ 目录
resources/
目录包含视图、语言包和原始前端资源(如 Sass、JavaScript 文件)。
-
views/
:存放应用的视图文件。Laravel 使用 Blade 模板引擎来处理视图,所有的视图文件都存放在这里。- 例如:
resources/views/products/index.blade.php
存放产品页面的 HTML 视图。
- 例如:
-
lang/
:存放应用的多语言文件,支持多语言站点。开发者可以根据需要翻译应用的文本。 -
sass/
、js/
:原始前端资源文件(例如 Sass 样式文件和 JavaScript 文件)。这些文件将经过编译工具(如 Laravel Mix)处理后,存放到public/
目录中。
7. routes/ 目录
routes/
目录包含应用程序所有的路由定义文件。
-
web.php
:定义 Web 路由,用于处理浏览器请求,通常是应用的前端路由。- 例如:
Route::get('/home', [HomeController::class, 'index']);
- 例如:
-
api.php
:定义 API 路由,用于处理 API 请求,通常是应用的后端路由,API 路由会自动应用api
中间件。- 例如:
Route::get('/products', [ProductController::class, 'index']);
- 例如:
-
console.php
:定义 Artisan 命令的路由,配置 Artisan 命令行工具的自定义命令。 -
channels.php
:定义广播频道的路由,用于设置 WebSocket 或其他实时功能的广播。
8. storage/ 目录
storage/
目录用于存放应用生成的各种文件,比如日志文件、缓存文件、上传文件等。
-
logs/
:存放 Laravel 的日志文件。通过 Monolog 记录应用的错误和日志信息。 -
framework/
:存放 Laravel 框架生成的缓存、视图文件等。 -
app/
:存放应用生成的文件,例如上传的文件等。
9. tests/ 目录
tests/
目录包含所有的自动化测试文件。Laravel 支持 PHPUnit 用于单元测试和功能测试。
-
Feature/
:存放功能测试文件,主要用于测试应用的功能是否正常。 -
Unit/
:存放单元测试文件,主要用于测试单个类或方法的逻辑是否正确。
10. .env 文件
.env
文件是 Laravel 应用程序的环境配置文件,用于定义应用程序在不同环境中的配置,例如数据库连接、缓存设置、第三方服务密钥等。
-
例子:
APP_NAME=Laravel APP_ENV=local APP_KEY=base64:randomKeyHere APP_DEBUG=true DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD=
11. composer.json
composer.json
是 Laravel 应用的依赖管理文件。它列出了应用程序所依赖的 PHP 包和框架,Laravel 使用 Composer 来管理所有的依赖。
-
例子:
{ "require": { "php": "^7.4", "laravel/framework": "^8.0", "fideloper/proxy": "^4.4", "fruitcake/laravel-cors": "^2.0" } }
12. artisan
artisan
是 Laravel 自带的命令行工具。它提供了许多常用的命令来帮助开发者快速开发和管理应用程序。常用的命令包括:
-
php artisan serve
:启动开发服务器。 -
php artisan make:model Product
:生成 Eloquent 模型。 -
php artisan make:controller ProductController
:生成控制器。
13. package.json
package.json
是前端的依赖管理文件,通常用于管理前端 JavaScript 包和工具。Laravel 项目中的前端部分通常使用 NPM 或 Yarn 来管理。
总结
Laravel 的文件和目录结构非常清晰和有组织,每个目录和文件都有其特定的作用。掌握这些文件和目录的作用,能够帮助你更好地理解框架的工作原理,并提高开发效率。
上一篇: JavaWeb:HT
下一篇: 分享一个typech