前阵子看了点Laravel源码,越看越乱,网上大部分中文文档都是直译,比较生涩难懂,还是决定看英文文档顺便就我的理解做下翻译整理记录下来
简介
默认的Laravel应用程序结构致力于同时为大小应用提供理想的起点。当然,你可以自由根据你的喜好组织自己的应用。Laravel几乎没有限制类的存放位置--只要Composer可以自动加载到。
根目录
新装Laravel的根目录包含多个目录:
app
目录包含了应用的核心代码。我们很快就会更详细的介绍这个目录。bootstrap
目录包含几个用来引导框架和配置自动加载的文件,还有一个cache
目录,里面有一些框架生成的文件来优化引导性能。config
目录,就如字面上的含义,包含所有应用配置文件。database
目录包含你的数据库migration
和seed
文件。如果你想,你也可以用这个目录来维护一个SQLite
数据库。public
目录包含前端控制器和你的资源文件(图片,JavaScript,CSS,等等)。resources
目录包含你的view,原生资源文件(LESS,SASS,CoffeeScript),和本地化文件。storage
目录包含编译过的Blade模板,基于文件的session,文件缓存,和其他框架生成的文件。这个目录被分割成了app
,framework
和logs
这几个目录。app
目录存放所有应用用到的文件。framework
目录存放框架生成的文件和缓存。最后,logs
目包含应用的日志文件。test
目录包含你的自动化测试文件。已经提供了一个开箱即用的PHPUnit
示例vendor
目录包含了Composer
依赖项。
App目录
应用的核心代码都位于app
目录。默认情况下,这个目录的在App
命名空间下同时被Composer用PSR-4自动加载标准
自动加载。
app
目录装载着多个二级目录例如Console
,Http
和Providers
。Console
和Http
为你的应用核心提供了一个API。HTTP协议和CLI都可以实现和应用交互,但不含实际逻辑。也就是说,他们只是给应用程序发放命令的2个途径。Console
目录包含了你所有的Artisan
命令,Http
目录包含controllers、middleware和requests。
Events
目录,放置着事件类。Events用来通知你,你应用程序的其他部分发生了给定动作,这为我们编码大大增加了灵活性便于解耦。
Exception
目录包含你应用的异常处理,是一个处理任何你应用抛出异常的好地方。
Jobs
目录包含应用的可队列化工作,这些工作会被应用程序队列化或者在当前请求生命周期内异步运行。
Listeners
目录包含事件的处理类。处理器接收到事件然后在response
中对事件执行逻辑。例如,UserRegistered
事件可能就会用SendWelcomeEmail
监听来处理。
Policies
目录包含应用的授权政策类。Policies用来确定用户是否可以对资源执行给定动作。
注意:许多在app目录下的类可以用Artisan通过命令行来生成。在终端中运行
php artisan list make
命令可以查看可用命令。