正是由于这个缘故原由,我们默认将 Eloquent 的模型直接放置到 app 目录下,开拓者可以自行选择放置的位置。
这是 Laravel 框架作者的想法,不过对付海内开拓者,尤其是 PHP 开拓者来说,models 目录用于存放与数据库交互的模型类该当没有什么异议,而业务逻辑该当放到 services 这种目录之下。以是推举大家在天生模型类的时候指定天生到 app/Models 目录下:
php artisan make:model Models/Test

App目录
app目录包含了运用的核心代码,把稳不是框架的核心代码,框架的核心代码在 /vendor/laravel/framework 里面,此外你为运用编写的代码绝大多数也会放到这里,当然,如果你基于 Composer 做了 PHP 组件化开拓的话,这里面存放的恐怕也只有一些入口性的代码了;
Bootstrap目录
bootstrap 目录包含了少许文件,用于框架的启动和自动载入配置,还有一个 cache 文件夹,里面包含了框架为提升性能所天生的文件,如路由和做事缓存文件;
Config目录
config 目录包含了运用所有的配置文件,建议通读一遍这些配置文件以便熟习 Laravel 所有默认配置项;
Database目录
database 目录包含了数据库迁移文件及添补文件,如果有利用 SQLite 的话,你还可以将其作为 SQLite 数据库存放目录;
Public目录
public 目录包含了运用入口文件 index.php 和前端资源文件(图片、JavaScript、CSS等),该目录也是 Apache 或 Nginx 等 Web 做事器所指向的运用根目录,这样做的好处是隔离了运用核心文件直接暴露于 Web 根目录之下,如果权限系统没做好或做事器配置有漏洞的话,很可能导致运用敏感文件被黑客盗取,进而对网站安全造成威胁;
Resources目录
resources 目录包含了运用视图文件和未编译的原生前端资源文件(LESS、SASS、JavaScript),以及本地化措辞文件;
Routes目录
routes 目录包含了运用定义的所有路由。Laravel 默认供应了四个路由文件用于给不同的入口利用:web.php、api.php、 console.php 和 channels.php。
web.php 文件包含的路由都位于 RouteServiceProvider 所定义的web 中间件组约束之内,因而支持 Session、CSRF 保护以及 Cookie 加密功能,如果运用无需供应无状态的、RESTful 风格的 API,那么路由基本上都要定义在 web.php 文件中。
api.php 文件包含的路由位于 api 中间件组约束之内,支持频率限定功能,这些路由是无状态的,以是要求通过这些路由进入运用须要通过 token 进行认证并且不能访问 Session 状态。
console.php 文件用于定义所有基于闭包的掌握台命令,每个闭包都被绑定到一个掌握台命令并且许可与命令行 IO 方法进行交互,只管这个文件并不定义 HTTP 路由,但是它定义了基于掌握台的运用入口(路由)。
channels.php 文件用于注册运用支持的所有事宜广播频道。
Storage目录
storage 目录包含了编译后的 Blade 模板、基于文件的 Session、文件缓存,以及其它由框架天生的文件,该目录被细分为成 app、framework 和 logs 子目录,app 目录用于存放运用天生的文件,framework 目录用于存放框架天生的文件和缓存,末了,logs 目录存放的是运用的日志文件。
storage/app/public 目录用于存储用户天生的文件,比如可以被公开访问的用户头像,要达到被 Web 用户访问的目的,你还须要在 public (运用根目录下的public 目录)目录下天生一个软连接 storage 指向这个目录。你可以通过 php artisan storage:link 命令天生这个软链接。
Tests目录
tests 目录包含自动化测试文件,个中默认已经供应了一个开箱即用的PHPUnit 示例;每一个测试类都要以 Test
开头,你可以通过 phpunit 或 php vendor/bin/phpunit 命令来运行测试。
Vendor目录
vendor 目录包含了运用所有通过 Composer 加载的依赖。
App目录运用的核心代码位于 app 目录下,默认情形下,该目录位于命名空间 App 下, 并且被 Composer 通过 PSR-4 自动载入标准 自动加载。
app 目录下包含多个子目录,如 Console、Http、Providers等。Console 和 Http 目录供应了进入运用核心的 API,HTTP 协议和 CLI 是和运用进行交互的两种机制,但实际上并不包含运用逻辑。换句话说,它们只是两个向运用发送命令的办法。Console 目录包含了所有开拓者编写的 Artisan 命令,Http 目录包含了掌握器、中间件和要求等。
其他目录会在你通过 Artisan 命令 make 天生相应类的时候自动天生到 app 目录下。例如,app/Jobs 目录直到你实行 make:job 命令天生任务类时才会涌如今 app 目录下。
注:app 目录中的很多类都可以通过 Artisan 命令天生,要查看所有有效的命令,可以在终端中运行 php artisan list make 命令。
Broadcasting目录
Broadcasting 目录包含了运用所需的所有广播频道类,这些类通过 make:channel 命令天生。该目录默认不存在,但是当你通过命令第一次创建频道类时会自动天生。想要理解更多关于频道的信息,可以查看事宜广播文档。
Console目录
Console 目录包含运用所有自定义的 Artisan 命令,这些命令类可以利用 make:command 命令天生。该目录下还有 Console/Kernel 类,在这里可以注册自定义的 Artisan 命令以及定义调度任务。
Events目录
这个目录默认不存在,但是可以通过 event:generate 和 make:event 命令创建。该目录用于存放事宜类。事宜类用于奉告运用其他部分某个事宜发生情形并供应灵巧的、解耦的处理机制。
Exceptions目录
Exceptions 目录包含运用的非常处理器,同时还是处理运用抛出的任何非常的利益所。如果你想要自定义非常如何记录或渲染,须要编辑该目录下的 Handler 类。
Http目录
Http 目录包含了掌握器、中间件以及表单要求等,险些所有通过 Web 进入运用的要求处理都在这里进行。
Jobs目录
该目录默认不存在,可以通过实行make:job 命令天生,Jobs 目录用于存放行列步队任务,运用中的任务可以被推送到行列步队,也可以在当前要求生命周期内同步实行。同步实行的任务有时也被看作命令,由于它们实现了命令模式。
Listeners目录
这个目录默认不存在,可以通过实行 event:generate 和 make:listener 命令创建。Listeners 目录包含处理事宜的类(事宜监听器),事宜监听器吸收一个事宜并供应对该事宜发生后的相应逻辑,例如,UserRegistered 事宜可以被 SendWelcomeEmail 监听器处理。
Mail目录
这个目录默认不存在,但是可以通过实行 make:mail 命令天生,Mail 目录包含运用所有邮件干系类,邮件工具许可你在一个地方封装构建邮件所需的所有业务逻辑,然后利用 Mail::send 方法发送邮件。
Notifications目录
这个目录默认不存在,你可以通过实行 make:notification 命令连带创建,Notifications 目录包含运用发送的所有关照,比如事宜发生关照。Laravel 的关照功能将关照发送和关照驱动解耦,你可以通过邮件,也可以通过Slack、短信或者数据库发送关照。
Policies目录
这个目录默认不存在,你可以通过实行 make:policy 命令天生策略类来创建, Policies 目录包含了运用所有的授权策略类,策略用于判断某个用户是否有权限去访问指定资源。更多详情,请查看授权文档。
Providers目录
Providers 目录包含运用的所有做事供应者。做事供应者在运用启动过程中绑定做事到容器、注册事宜以及实行其他任务为即将到来的要求处理做好准备事情。在新安装的 Laravel 运用中,该目录已经包含了一些做事供应者,你可以按需添加自己的做事供应者到该目录。
Rules目录
该目录默认不存在,但是会伴随你实行 Artisan 命令 make:rule 自动天生。Rules 目录包含运用的自定义验证规则工具,这些规则用于在单个工具中封装繁芜的验证逻辑,想要理解更多的话,请参磨练证文档。
总结:目录构造的掩护须要用到artisan命令,以是节制利用Laravel 必须节制的常用命令非常主要。