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 的文件和目录结构非常清晰和有组织,每个目录和文件都有其特定的作用。掌握这些文件和目录的作用,能够帮助你更好地理解框架的工作原理,并提高开发效率。