有朋友问云客drupal源码分析系列文章有顺序规律吗?我的回答是有!从第一篇开始以来她是按照drupal的执行流程分主题进行的,除前言外,已经发布12篇了,如果你是跟着drupal的执行流程进行研究学习的,那么这些文章就像站在路旁等着你的引路人为你揭开一些迷惑的问题,drupal很大,前方很远,有时候你可能感觉站在一望无际的平原,眼前只有遥远天际的落日昏辉,希望这些引路人让走在这条路上的你不那么孤独,应该先读她,再去看代码,这样心中有大局,既舒适又快速。很多开发者学习一个系统时喜欢跟着代码执行流程走,如果你也是,那么在这里我很激动的告诉你:“本篇!你到了一个大站,在这里你将看到整个系统主干执行流程的全貌!”,前一个大站应该是容器的形成,然后经过HttpKernel堆栈中一层一层处理核心的执行到达这里;这是堆栈中最后一个处理核心,也是系统最主要的核心,剩余所有的工作都在这个核心里面进行,本篇就是介绍这个核心的。
所谓大道至简,用在这里是再合适不过了,本核心在容器中的服务名是http_kernel.basic,主干程序非常简单,它完全使用Symfony的HTTP核心组件:Symfony\Component\HttpKernel\HttpKernel,这个组件的官方文档请看这里:http://symfony.com/doc/2.8/components/http_kernel.html,源代码位于:\vendor\symfony\http-kernel\HttpKernel.php
Symfony处理核心定义了一个处理流程:
请求开始》解析得到控制器》修正控制器》解析控制器参数》执行控制器》根据控制器返回情况:要么产生了响应,要么得到渲染数组去开启模板引擎渲染一个响应》最后发送响应;
这个过程可能出现异常那么就处理异常产生一个响应,整个过程可能循环很多遍以得到最终响应(每遍得到一个内容块)。
Symfony处理核心使用事件派发机制,这是一个非常强大灵活的机制,在软件设计模式中叫做监听者模式。有一个事件派发器,它内部记录着不同的事件,及对应需要启动的程序,这些程序叫做监听