目录结构
Introduction
默认的 Laravel 应用程序结构旨在为大型和小型应用程序提供一个很好的起点。但是您可以随意组织您的应用程序。 Laravel 对任何给定类的位置几乎没有任何限制 - 只要 Composer 可以自动加载该类。
Note Laravel 新手?查看Laravel 训练营 在我们引导您构建您的第一个 Laravel 应用程序的同时,亲身体验该框架。
根目录
应用目录
这app
目录包含应用程序的核心代码。我们将很快更详细地探索这个目录;但是,应用程序中的几乎所有类都将位于此目录中。
引导程序目录
这bootstrap
目录包含app.php
引导框架的文件。该目录还包含一个cache
包含框架生成的性能优化文件的目录,例如路由和服务缓存文件。您通常不需要修改此目录中的任何文件。
配置目录
这config
顾名思义,目录包含应用程序的所有配置文件。通读所有这些文件并熟悉所有可用的选项是个好主意。
数据库目录
这database
目录包含您的数据库迁移、模型工厂和种子。如果你愿意,你也可以使用这个目录来保存一个 SQLite 数据库。
公共目录
这public
目录包含index.php
文件,这是所有进入应用程序的请求的入口点,并配置自动加载。此目录还包含您的资产,例如图像、JavaScript 和 CSS。
资源目录
这resources
目录包含你的views 以及您原始的、未编译的资产,例如 CSS 或 JavaScript。
路线目录
这routes
目录包含应用程序的所有路由定义。默认情况下,Laravel 包含几个路由文件:web.php
,api.php
,console.php
, 和channels.php
.
这web.php
文件包含路由RouteServiceProvider
地方在web
中间件组,提供会话状态、CSRF 保护和 cookie 加密。如果您的应用程序不提供无状态的 RESTful API,那么您的所有路由很可能会在web.php
文件。
这api.php
文件包含路由RouteServiceProvider
地方在api
中间件组。这些路由旨在是无状态的,因此通过这些路由进入应用程序的请求旨在进行身份验证通过代币 并且将无法访问会话状态。
这console.php
文件是您可以定义所有基于闭包的控制台命令的地方。每个闭包都绑定到一个命令实例,允许一种简单的方法与每个命令的 IO 方法进行交互。尽管此文件未定义 HTTP 路由,但它定义了基于控制台的入口点(路由)到您的应用程序中。
这channels.php
文件是你可以注册所有的事件广播 您的应用程序支持的频道。
存储目录
这storage
目录包含您的日志、编译的 Blade 模板、基于文件的会话、文件缓存和框架生成的其他文件。该目录分为app
,framework
, 和logs
目录。这app
目录可用于存储应用程序生成的任何文件。这framework
目录用于存储框架生成的文件和缓存。最后,logs
目录包含应用程序的日志文件。
这storage/app/public
目录可用于存储用户生成的文件,例如应该可公开访问的个人资料头像。您应该在以下位置创建一个符号链接public/storage
指向这个目录。您可以使用创建链接php artisan storage:link
工匠命令。
测试目录
这tests
目录包含您的自动化测试。例子PHPUnit 开箱即用地提供了单元测试和功能测试。每个测试类都应以单词为后缀Test
.您可以使用phpunit
或者php vendor/bin/phpunit
命令。或者,如果您想要更详细、更漂亮的测试结果表示,您可以使用php artisan test
工匠命令。
供应商名录
这vendor
目录包含你的Composer 依赖项。
应用目录
您的大部分应用程序都位于app
目录。默认情况下,此目录命名空间位于App
并由 Composer 使用PSR-4 自动加载标准.
这app
目录包含各种附加目录,例如Console
,Http
, 和Providers
.想想Console
和Http
目录为您的应用程序的核心提供 API。 HTTP 协议和 CLI 都是与您的应用程序交互的机制,但实际上并不包含应用程序逻辑。换句话说,它们是向您的应用程序发出命令的两种方式。这Console
目录包含您所有的 Artisan 命令,而Http
目录包含您的控制器、中间件和请求。
里面会生成其他各种目录app
使用时的目录make
用于生成类的 Artisan 命令。所以,例如,app/Jobs
目录将不存在,直到你执行make:job
用于生成作业类的 Artisan 命令。
Note
课程中的许多课程app
目录可以由 Artisan 通过命令生成。要查看可用命令,请运行php artisan list make
命令在你的终端。
广播目录
这Broadcasting
目录包含应用程序的所有广播频道类。这些类是使用make:channel
命令。默认情况下此目录不存在,但会在您创建第一个频道时为您创建。要了解有关频道的更多信息,请查看有关的文档事件广播.
控制台目录
这Console
目录包含应用程序的所有自定义 Artisan 命令。这些命令可以使用make:command
命令。该目录还包含您的控制台内核,这是您注册自定义 Artisan 命令和您的计划任务 被定义。
活动目录
该目录默认不存在,但会由event:generate
和make:event
工匠命令。这Events
名录屋事件类.事件可用于提醒应用程序的其他部分已发生给定操作,从而提供很大的灵活性和解耦。
例外目录
这Exceptions
目录包含应用程序的异常处理程序,也是放置应用程序抛出的任何异常的好地方。如果您想自定义异常的记录或呈现方式,您应该修改Handler
这个目录下的类。
Http 目录
这Http
目录包含您的控制器、中间件和表单请求。几乎所有处理进入应用程序的请求的逻辑都将放在这个目录中。
工作目录
该目录默认不存在,但如果您执行make:job
工匠命令。这Jobs
目录包含可排队的工作 为您的应用程序。作业可能由您的应用程序排队或在当前请求生命周期内同步运行。在当前请求期间同步运行的作业有时称为“命令”,因为它们是命令模式.
听众名录
该目录默认不存在,但如果您执行event:generate
或者make:listener
工匠命令。这Listeners
目录包含处理你的类events.事件侦听器接收事件实例并执行逻辑以响应被触发的事件。例如,一个UserRegistered
事件可能由一个处理SendWelcomeEmail
听众。
邮件目录
该目录默认不存在,但如果您执行make:mail
工匠命令。这Mail
目录包含你所有的代表电子邮件的类 由您的应用程序发送。邮件对象允许您将构建电子邮件的所有逻辑封装在一个简单的类中,可以使用Mail::send
方法。
模型目录
这Models
目录包含你所有的Eloquent 模型类. Laravel 中包含的 Eloquent ORM 提供了一个漂亮、简单的 ActiveRecord 实现来处理你的数据库。每个数据库表都有一个对应的“模型”,用于与该表进行交互。模型允许您查询表中的数据,以及将新记录插入表中。
通知目录
该目录默认不存在,但如果您执行make:notification
工匠命令。这Notifications
目录包含所有“交易”notifications 由您的应用程序发送的,例如关于您的应用程序中发生的事件的简单通知。 Laravel 的通知功能抽象了通过各种驱动程序发送通知,例如电子邮件、Slack、SMS,或存储在数据库中。
政策目录
该目录默认不存在,但如果您执行make:policy
工匠命令。这Policies
目录包含授权策略类 为您的应用程序。策略用于确定用户是否可以对资源执行给定的操作。
供应商名录
这Providers
目录包含所有的服务供应商 为您的应用程序。服务提供商通过在服务容器中绑定服务、注册事件或执行任何其他任务来为您的应用程序准备传入请求来引导您的应用程序。
在一个新的 Laravel 应用程序中,这个目录已经包含了几个提供者。您可以根据需要随意将自己的提供程序添加到此目录中。
规则目录
该目录默认不存在,但如果您执行make:rule
工匠命令。这Rules
目录包含应用程序的自定义验证规则对象。规则用于将复杂的验证逻辑封装在一个简单的对象中。有关更多信息,请查看验证文件.