Skip to content

应用程序结构

介绍

默认的 Laravel 应用程序结构旨在为大型和小型应用程序提供一个很好的起点。当然,您可以随意组织您的应用程序。Laravel 几乎不对任何类的位置施加限制——只要 Composer 能够自动加载该类即可。

根目录

一个新的 Laravel 安装的根目录包含各种文件夹:

app 目录,如您所料,包含应用程序的核心代码。我们将很快更详细地探讨这个文件夹。

bootstrap 文件夹包含一些引导框架和配置自动加载的文件,以及一个 cache 文件夹,其中包含一些框架生成的文件以优化引导性能。

config 目录,顾名思义,包含所有应用程序的配置文件。

database 文件夹包含您的数据库迁移和种子。如果您愿意,您还可以使用此文件夹来保存 SQLite 数据库。

public 目录包含前端控制器和您的资产(图像、JavaScript、CSS 等)。

resources 目录包含您的视图、原始资产(LESS、SASS、CoffeeScript)和本地化文件。

storage 目录包含编译的 Blade 模板、基于文件的会话、文件缓存和框架生成的其他文件。此文件夹分为 appframeworklogs 目录。app 目录可用于存储应用程序使用的任何文件。framework 目录用于存储框架生成的文件和缓存。最后,logs 目录包含应用程序的日志文件。

tests 目录包含您的自动化测试。开箱即用提供了一个示例 PHPUnit

vendor 目录包含您的 Composer 依赖项。

应用程序目录

应用程序的“核心”位于 app 目录中。默认情况下,此目录在 App 命名空间下,并使用 PSR-4 自动加载标准 由 Composer 自动加载。您可以使用 app:name Artisan 命令更改此命名空间

app 目录附带各种附加目录,如 ConsoleHttpProviders。将 ConsoleHttp 目录视为提供应用程序“核心”的 API。HTTP 协议和 CLI 都是与应用程序交互的机制,但实际上不包含应用程序逻辑。换句话说,它们只是向应用程序发出命令的两种方式。Console 目录包含所有的 Artisan 命令,而 Http 目录包含控制器、中间件和请求。

Jobs 目录当然容纳了应用程序的可排队作业。作业可以由应用程序排队,也可以在当前请求生命周期内同步运行。

Events 目录,如您所料,容纳了事件类。事件可用于通知应用程序的其他部分某个操作已发生,提供了很大的灵活性和解耦。

Listeners 目录包含事件的处理程序类。处理程序接收事件并在事件触发时执行逻辑。例如,UserRegistered 事件可能由 SendWelcomeEmail 监听器处理。

Exceptions 目录包含应用程序的异常处理程序,也是放置应用程序抛出的任何异常的好地方。

lightbulb

app 目录中的许多类可以通过 Artisan 命令生成。要查看可用命令,请在终端中运行 php artisan list make 命令。

为应用程序命名空间

如上所述,默认的应用程序命名空间是 App;但是,您可以通过 app:name Artisan 命令轻松更改此命名空间以匹配应用程序的名称。例如,如果您的应用程序名为“SocialNet”,您可以运行以下命令:

php
php artisan app:name SocialNet

当然,您可以自由地简单使用 App 命名空间。