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

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

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

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

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

Policies 目录包含应用程序的授权策略类。策略用于确定用户是否可以对资源执行给定操作。有关更多信息,请查看 授权文档

lightbulb

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