[ Laravel从入门到精通 ] 请求与响应系列 —— 异常处理篇之异常信息报告、渲染及自定义处理

上篇教程学院君大致介绍了 Laravel 异常处理底层原理,今天我们来详细介绍下进行异常处理时如何报告和渲染异常信息。 异常信息的报告 通过上篇教程的介绍,你应该知道 Laravel 是通过系统注册的异常处理器提供的 report 方法来报告异常,那么我们就来看看系统自带的异常处理器是如何定义该方法的,如果你要自定义异常报告机制的话,也可以参考该方法的实现。该方法的源码位于 vendor...

[ Laravel从入门到精通 ] 请求与响应系列 —— 异常处理篇之底层源码剖析

前面我们介绍 Laravel 中 HTTP 请求生命周期和中间件底层处理逻辑的时候,都涉及到了 vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php 这个文件,对应的 Illuminate\Foundation\Http\Kernel 类是我们 Laravel 应用 HTTP Kernel 类 App\Htt...

[ Laravel 从入门到精通 ] 请求与响应系列 —— Laravel 路由匹配和执行底层源码剖析

入口方法 通过上一篇教程,我们知道路由匹配和处理逻辑入口位于 vendor/laravel/framework/src/Illuminate/Routing/Router.php 的 dispatch 方法: public function dispatch(Request $request) { $this->currentRequest = $request; ret...

[ Laravel 从入门到精通 ] 请求与响应系列 —— Laravel 中间件底层源码剖析

前面学院君已经给大家介绍了 Laravel 一次请求生命周期底层运行逻辑,并分别就请求类和响应类的底层实现和基本使用给大家做了详细的演示,接下来,我们还是围绕请求生命周期中的组件展看,分两篇教程分别介绍中间件的底层原理和路由匹配的底层原理。首先我们来看中间件。 什么是中间件 中间件并不是 Laravel 框架所独有的概念,而是一种被广泛应用的架构模式,尤其是在 Java 中。 在 Lar...

[ Laravel 从入门到精通 ] 请求与响应系列 —— Laravel 响应类 Response 剖析

和 Laravel 请求对象类 Request 类似,代码底层有一个 Response 类用于表示发送给终端用户的应用响应,其中包含响应头、Cookie、响应内容、以及其它发送给终端用户浏览器用于渲染响应页面的东西。 和 Request 类似,Response 的完整类名是 Illuminate\Http\Response,继承自 Symfony 的 HTTP 响应基类 Symfony\...

[ Laravel 从入门到精通 ] 请求与响应系列 —— Laravel 请求类 Request 剖析

我们已经知道,在 Laravel 框架中,需要通过 Request 对象来获取用户请求信息,该对象引用的完整类名是 Illuminate\Http\Request,而该请求类又继承自 Symfony 的 Symfony\Component\HttpFoundation\Request,所以在介绍 Laravel 的 Request 之前,需要先对 Symfony 底层的 Request ...

[ Laravel 从入门到精通 ] 请求与响应系列 —— Laravel 底层是如何处理 HTTP 请求的

总体流程 Web 服务器对 HTTP 请求的处理流程大体上都是这样的:在某个端口监听请求,请求进入后运行程序,然后将程序运行结果以响应的形式发送出去。 基于 Laravel 框架构建的 Web 应用处理 HTTP 请求的流程也是如此。所有 HTTP 请求都会被转发到单入口文件 public/index.php,处理 HTTP 请求的核心代码如下(忽略 HTTP 请求处理之外的代码): ...

[ Laravel 从入门到精通 ] 用户认证与授权系列 —— 基于 CAS 实现通用的单点登录解决方案(三):用户单点退出实现

前面两篇教程学院君陆续介绍了 CAS 单点登录实现原理,CAS Server 及 Client 环境搭建和单点登录流程演示,这篇教程我们简单来介绍下 CAS 单点退出实现。 原理概述 基于 CAS 单点登录系统的退出主要包含两个部分: CAS 客户端应用的退出 CAS 服务端退出登录状态 我们在 CAS 客户端应用退出后将页面重定向到服务端退出登录状态,然后通过传递过去的回跳地址跳转...

服务器部署篇(四):使用现代化工具 Capistrano 自动部署应用代码到生产环境

PHP 代码早期使用 FTP 部署到生产环境,不过这种方式显然不适合集群部署,也不安全,本教程主要讨论如何使用现代化工具自动部署,这种方式简单、可预知结果,而且可逆。 版本控制 把代码纳入版本控制是现代开发人员的基本素养,我们可以使用 Git,也可以使用 SVN,对于应用开发者来说,版本控制有助于记录代码的变化,我们可以把一个时间点的代码标记为发布版本,可以回滚到之前的状态,...

[ PHP 内核与扩展开发系列] PHP 生命周期 —— 启动、终止与模式

启动与终止 PHP程序的启动可以看作有两个概念上的启动,终止也有两个概念上的终止。 其中一个是 PHP 作为Apache(拿它举例,板砖勿扔)的一个模块的启动与终止, 这次启动 PHP 会初始化一些必要数据,比如与宿主 Apache 有关的,并且这些数据是常驻内存的,终止与之相对。还有一个概念上的启动就是当 Apache 分配一个页面请求过来的时候,PHP会有一次启动与终止,这也是我们...