资讯专栏INFORMATION COLUMN

Laravel 运行机制简略剖析

zhaofeihao / 2862人阅读

1. 预备知识 1.1 composer 基本用法 1.1.1 参考文章

composer 基本用法

1.1.2 要求掌握的知识点

composer 依赖管理

composer 自动加载(关键)

1.2 DIP、IOC、DI、IOC 容器

详情文章

2. Laravel 运行机制剖析 2.1 场景

范例:http://laravel.com/test?name=chenxuelong

2.2 运行机制 2.2.1 前提

以下路径都是相对于 Laravel 根目录而言的.

2.2.1 正文

public/index.php

注册了 composer 自带的自动加载`

实例化 IlluminateFoundationApplication

设置了框架路径

注册 app 单例(指向 Application

注册 IlluminateContainerContainer 单例,指向 Applicaion

注册基础服务提供者

事件服务提供者(EventServiceProvider)

日志服务提供者(LogServiceProvider)

路由服务提供者(RoutingServiceProvider)

注册核心类的别名

注册 AppHttpKernel 单例

注册 AppConsoleKernel 单例

注册 AppExceptionsHandler 单例

获取已注册的 AppHttpKernel 单例

设置路由中间件组

设置路由中间件

调用 IlluminateHttpRequestcapture 方法,返回 IlluminateHttpRequest 实例

调用 handle 方法,传入 Request 实例,并返回响应(IlluminateHttp esponse

启用 _method 请求参数来确定预期的 HTTP 方法

注册 request 单例

清除已注册的 request 实例

启动包装器(即:载入配置文件中定义的数据)

载入环境变量

载入配置文件

异常处理

注册 Facades

注册服务提供者

启动服务提供者

middleware,核心中间件

middlewareGroups,对应类型(webapi)的中间件组

routeMiddleware可选路由中间件(由用户决定是否启用,和注入的模型的启动顺序由用户自由调控)

可选,实例化 模型

可选:实例化表单验证类,进行验证

控制器

返回视图

调用 responsesend 方法

自定义 response header

结束客户端请求,输出响应(详情查看:fastcgi_finish_request 函数)。其后的输出将丢失(除非写进日志)

调用 AppHttpKernelterminate 方法,执行程序结束时的回调

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25804.html

相关文章

  • 关于fork的简略版源码剖析

    摘要:还有一点需要注意,子进程得到的只是父进程的拷贝,而不是父进程资源的本身。 首先声明一下所剖析的源码版本是Linux2.6.11.12 fork()函数和vfork()等都调用的是do_fork()函数,我们所用的fork工作都是由do_fork()来进行的。 do_fork()函数: 进入后首先去通过查找pidmap_array位图,寻找一个子进程所需要的新的pid alloc_...

    苏丹 评论0 收藏0
  • 剖析 Laravel 计划任务--避免重复

    摘要:持有鸡的人是唯一被允许谈话的人。这样可以确保人们互不说话,也有自己的空间。所以当作业第一次启动时,创建一个互斥,然后每次作业运行时,它检查互斥是否存在,只有在没有工作的情况下运行。 译文GitHub https://github.com/yuansir/diving-laravel-zh 原文链接 https://divinglaravel.com/task-scheduling/pr...

    li21 评论0 收藏0
  • 剖析 Laravel 计划任务--事件属性

    摘要:所以在这里创建一个事件的两个实际方法是通过调用或,第一个提交一个的实例,后者提交来做一些特殊处理。那么会用表达式检查命令是否到期吗恰恰相反,使用库来确定命令是否基于当前系统时间相对于我们设置的时区。 译文GitHub https://github.com/yuansir/diving-laravel-zh 原文链接 https://divinglaravel.com/task-sche...

    xiaowugui666 评论0 收藏0
  • 剖析 Laravel 计划任务--创建和运行系统命令

    摘要:译文原文链接在启动计划任务的事件的时候,的进度管理器在对象上调用方法,表示该事件发生在内。在方法里面定义每一个命令的互斥所以它是事件的表达式和命令字符串的组合。 译文GitHub https://github.com/yuansir/diving-laravel-zh 原文链接 https://divinglaravel.com/task-scheduling/building-and...

    luodongseu 评论0 收藏0
  • Swoft 源码剖析 - 目录

    摘要:作者链接來源简书著作权归作者所有,本文已获得作者授权转载,并对原文进行了重新的排版。同时顺手整理个人对源码的相关理解,希望能够稍微填补学习领域的空白。系列文章只会节选关键代码辅以思路讲解,请自行配合源码阅读。 作者:bromine链接:https://www.jianshu.com/p/2f6...來源:简书著作权归作者所有,本文已获得作者授权转载,并对原文进行了重新的排版。Swoft...

    qpwoeiru96 评论0 收藏0

发表评论

0条评论

zhaofeihao

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<