[Day21]Laravel目录结构

Laravel目录结构

先来说说各个目录及资料夹里面放置档案,并没有强制规定

根目录

app目录

app资料夹都是应用程序的核心程序码,大部分程序码都放在这。

Bootstarp目录

bootstrap 目录包含的档案用来启动框架和设定自动载入;以及包含一个 cache 资料夹,其中内有框架对效能最佳化所产生的档案,例如 route 和 services 的快取档案。

Config目录

config目录底下包含所有应用程序的配置档案。

Database目录

里面放置资料库迁移档案以及填充档案

Pulic目录

public目录存放着index.php,此档案是应用程序的HTTP请求入口点。还包含了前端资源,如图片,JavaScript和css

Resources目录

目录包含要使用的view,原始资源档(LESS,SASS,CoffeeScript)以及语言档

Routes目录

这个目录包含所有路由定义,laravel有预设三个路由档案,web.phpapi.phpconsole.php

web.php里面定义的路由都会被RouteServiceProvider分配到web的中介层(middleware),因此会具备Session、CSRF 防护以及 Cookie 加密功能,如果应用程序无需提供无状态的、RESTful 风格的 API,则所有的路由都会定义在 web.php 档案中。

api.php 档案里定义的路由都会在 RouteServiceProvider 中被指配到 api 中介层群组,具备频率限制功能,这些路由是无状态的,所以经由这些路由进入应用程序需要 token 进行认证,并且不能访问 Session 状态。

console.php 档案用於定义所有基於闭包的控制台指令,每个闭包都被系结到一个控制台指令并且允许与指令列 IO 方法进行互动,尽管这个档案并不定义 HTTP 路由,但是它定义了基於指令列的应用程序入口(路由)。

Storage 目录

storage 目录包含编译後的 Blade 模板、基於档案的 session、档案快取和其它框架生成的档案。底下资料夹分隔成 app、framework,及 logs 目录。app 目录可用於储存应用程序使用的任何档案。framework 目录被用於储存框架生成的档案及快取。最後,logs 目录包含了应用程序的日志档案。

storage/app/public 可以用来存放使用者上传档案(例如个人大头照)。为了能公开访问,需要建立 public/storage 连结(symbolic link),然後指到 storage/app/public 这个资料夹,你可以使用 php artisan storage:link 来建立连结。

Tests 目录

tests 目录包含自动化测试的档案。有预设一个现成的 PHPUnit 范例。每一个测试类都需要新增 Test 字首,你可以使用 phpunit 或者 php vendor/bin/phpunit 指令来执行测试。

Vendor 目录

vendor 目录包含你的 Composer 依赖模组,套件档案都放这。

App 目录

在 app 目录中的很多类别都可以透过 Artisan 指令产生,要检视所有有效的指令,可以在终端机中执行 php artisan list make 指令。

Console 目录

Console 目录包含应用程序所有自定义的 Artisan 指令,这些指令类别可以使用 make:command 指令产生。

Events 目录

Events 目录预设不存在,会在你使用 event:generate 或 make:event 指令以後才会被建立。此 Events 目录是用来放置事件类别的。

Exceptions 目录

Exceptions 目录包含应用程序的异常处理程序,同时也是个处置应用程序丢掷异常的好位置。如果你想自定义异常的记录和渲染,你应该修改此目录下的 Handler 类别。

Http 目录

Http 目录包含了控制器、中介层以及表单请求等,几乎所有进入应用程序的请求处理都放在这里。

Jobs 目录

该目录预设不存在,可以通过执行 make:job 指令建立,Jobs 目录用於存放伫列任务,应用程序中的任务可以被伫列化,也可以在当前请求生命周期内同步执行。同步执行的任务有时也被看作指令,因为它们实现了命令模式。

Listeners 目录

这个目录预设不存在,可以通过执行 event:generate 和 make:listener 指令建立。Listeners 目录包含处理事件的类别(事件监听器),事件监听器接收一个事件并提供对该事件发生後的响应逻辑,例如,UserRegistered 事件可以被 SendWelcomeEmail 监听器处理。

Mail 目录

这个目录预设不存在,但是可以通过执行 make:mail 指令产生,Mail 目录包含邮件传送类别,邮件物件允许你在一个地方封装构建邮件所需的所有业务逻辑,然後使用 Mail::send 方法传送邮件。

Notifications 目录

这个目录预设不存在,可以通过执行 make:notification 指令建立, Notifications 目录包含应用程序传送的所有通知。

Policies 目录

这个目录预设不存在,可以通过执行 make:policy 指令来建立, Policies 目录包含了所有的授权策略类别,策略用於判断某个使用者是否有许可权去访问指定资源。

Providers 目录

Providers 目录包含应用程序的服务提供者。服务提供者在启动应用程序过程中系结服务到容器、注册事件,以及执行其他任务,为即将到来的请求处理做准备。


<<:  Day09:程序码编辑器的实用快捷键(1)

>>:  [Day22] JavaScript - Fetch API

[30天 Vue学好学满 DAY2] Vue.js介绍

核心概念-渐进式框架(progressive framework) 一个完整的页面是由各个组件(co...

18.unity实例化(上)(Instantiate)

Instantiate实例化,用於将物件生成至场景中。(参考unity手册) 适合用在复制一样的物件...

Day 0xC UVa10170 The Hotel with Infinite Rooms

Virtual Judge ZeroJudge 题意 输入第一组旅行团人数 S,输出酒店内第 D ...

克服拖延 → 维持专心 → 深度专注

昨天介绍了正念训练 (mindfulness practice),这是注意力控制的基本训练,直接强化...

D-18. SQL & NoSQL、SQL injection、primary key & foreign key

SQL && NoSQL SQL Structured Query Language...