今天开始博主要开始学习Larvel啦并将他用在实际的项目中去

一、 目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# /               根目录
|--- app 应用目录(包含应用程序的核心代码)
|--- Console 包含应用所有自定义的 Artisan 命令
|--- Events 用来放置 事件类 的
|--- Exceptions 应用的异常处理
|--- Http 包含你的控制器、中间件和请求
|--- Jobs 用于存放 队列任务(在你执行 make:job 命令生成任务类时,才会出现)
|--- Listeners
|--- Mail 邮件发送类(默认不存在,但是可以通过执行 make:mail 命令生成,Mail 目录包含邮件发送类,邮件对象允许你在一个地方封装构建邮件所需的所有业务逻辑,然后使用 Mail::send 方法发送邮件。)
|--- Notifications 包含应用发送的所有通知,比如事件发生通知(目录默认不存在,你可以通过执行 make:notification 命令创建, )
|--- Policies 包含了所有的授权策略类(通过执行 ·make:policy· 命令来创建)
|--- Providers 包含应用的 服务提供者 (Providers 目录包含应用的 服务提供者 。服务提供者在启动应用过程中绑定服务到容器、注册事件,以及执行其他任务,为即将到来的请求处理做准备。)
|--- bootstrap 引导目录(目录包含了几个框架启动和自动加载设置的文件)
|--- cache (包含框架为提升性能所生成的文件,如路由和服务缓存文件)
|--- config 配置文件
|--- database 数据库(包含了数据迁移及填充文件)
|--- public 包含了 Laravel 的 HTTP 入口文件 index.php 和前端资源文件(图片、JavaScript、CSS等)
|--- resources 资源目录(包含了视图、原始的资源文件 (LESS、SASS、CoffeeScript) ,以及语言包。)
|--- routes 路由目录(包含了应用的所有路由定义)
|--- storage 包含编译后的 Blade 模板、基于文件的 session、文件缓存和其它框架生成的文件
|--- app 用于存储应用程序使用的任何文件
|--- framework 目录被用于保存框架生成的文件及缓存
|--- logs 目录包含了应用程序的日志文件
|--- tests 包含自动化测试
|--- vendor 包含所有 Composer 依赖

请求的整体流程

larvel的请求入口是public/index.PHP,我们在开始部署的时候不管你用的是apache还是nginx都会指向这个文件,这是程序的入口。

  1. public/index.php 文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

/*
|--------------------------------------------------------------------------
| 注册自定义加载类
|--------------------------------------------------------------------------
*/

require __DIR__.'/../bootstrap/autoload.php';

/*
|--------------------------------------------------------------------------
| 引入Larvel应用实例(composer生成的自定义加载器定义)
|--------------------------------------------------------------------------
*/

$app = require_once __DIR__.'/../bootstrap/app.php';

/*
|--------------------------------------------------------------------------
| 创建一个自身应用实例([服务容器](https://docs.golaravel.com/docs/5.4/container/))
|--------------------------------------------------------------------------
*/
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);

$response->send();

$kernel->terminate($request, $response);

以上是初步分析,后续会继续跟进,大家可以多提提意见,让我成长更快~