ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## Laravel 的文件夹结构 上一节我们简单的了解了一下 `MVC` 工作流程,有很多目录里的文件还不清楚有什么作用。在 `Laravel` 没有严格地限制任何给定的类的位置,只要它们能被 Composer 自动加载。接下来我们简单的介绍一下 `Laravel` 的目录结构。 ### Bootstrap 目录 `bootstrap` 目录包含启动框架的 `app.php` 文件. 该目录还包含了一个 `cache` 目录,`cache` 目录下存放着框架生成的用来提升性能的文件,比如路由和服务缓存文件。 ### Config 目录 `config` 目录包含应用程序所有的配置文件。鼓励大家通读这些配置文件内容,可以更好的了解 `Laravel` 功能。 ### Database 目录 `database` 目录包含数据填充和迁移文件以及模型工厂类。你还可以把它作为 SQLite 数据库存放目录。 ### Public 目录 `public` 目录包含了入口文件 `index.php`,它是进入应用程序的所有请求的入口点。此目录还包含了一些你的资源文件(如图片、JavaScript 和 CSS)。 ### Resources 目录 resource 目录包含了视图和未编译的资源文件(如 LESS、SASS 或 JavaScript)。此目录还包含你所有的语言文件。 ### Routes 目录 `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 目录 `storage` 目录包含编译后的 `Blade` 模板、`session` 会话生成的文件、缓存文件以及框架生成的其他文件。这个目录被细分成 `app` 、 `framework` 和 `logs` 三个子目录。`app` 目录可以用来存储应用生成的任何文件。 `framework` 目录用来存储框架生成的文件和缓存。最后, `logs` 目录包含应用的日志文件。 ### Vendor 目录 `vendor` 目录包含你所有的 `Composer` 依赖包。 ### App 目录 应用程序的大部分代码都在 `app` 目录内。默认情况下,这个目录位于命名空间 `App` 下并且会被 `Composer` 按照 `PSR-4 autoloading standard` 标准自动加载。 `app` 目录包含了各种各样的目录,比如 `Console`、`Http` 和 `Providers` 等。`Http` 目录包含了应用的控制器、中间件和请求。 。 > 还有一些目录是命令才会生成的,这里先不做演示,后面讲解相应功能的时候再说明。 #### Broadcasting 目录 `Broadcasting` 目录包含应用程序的所有广播频道类。 这些类可以通过使用 `make:channel` 命令来创建。 默认情况下此目录是不存在的,在创建第一个频道类时将为你创建此目录。 要了解有关频道的更多信息,请查阅 事件广播. #### Console 目录 `Console` 目录包含了所有自定义的 `Artisan` 命令。这些命令可以通过 `make:command` 来生成。这个目录还包含了控制台内核,控制台内核可以用来注册你的自定义 `Artisan` 命令和你定义的 计划任务 的地方 #### Exceptions 目录 `Exceptions` 目录包含了应用的异常处理器,也是应用抛出异常的好地方。如果想自定义记录或者渲染异常的方式,你就要修改此目录下的 `Handler` 类。 #### Http 目录 `Http` 目录包含了控制器、中间件和表单请求。几乎所有的进入应用的请求的处理逻辑都被放在这里。 ### 总结 目录结构就简单介绍到这里,简单的梳理一下 `Laravel` 目录结构,大家如果对某些功能感兴趣可以自己去官网查看文档,或者浏览中文翻译的文档。