banner

ThinkPHP8框架之http请求流程

在php领域,有许多优秀的框架可供我们程序开发者使用。比如thinkphp、laravel、Phalcon、YII,codeignter等框架,都是非常优秀的php框架。其中有一款非常优秀的由国内开发人员维护和开发的框架备受欢迎。没错,这款框架就是thinkphp。由于篇幅有限,这里就不列出其所有的功能特性了。本章节我们来说明一下它的请求流程。

通常来说,对于一个HTTP应用来说,从用户发起请求到响应输出结束,大致的标准请求流程如下:

1 载入Composer的自动加载autoload文件
2 实例化系统应用基础类think\App
3 获取应用目录等相关路径信息
4 加载全局的服务提供provider.php文件
5 设置容器实例及应用对象实例,确保当前容器对象唯一
6 从容器中获取HTTP应用类think\Http
7 执行HTTP应用类的run方法启动一个HTTP应用
8 获取当前请求对象实例(默认为 app\Request 继承think\Request)保存到容器
9 执行think\App类的初始化方法initialize
10 加载环境变量文件.env和全局初始化文件
11 加载全局公共文件、系统助手函数、全局配置文件、全局事件定义和全局服务定义
12 判断应用模式(调试或者部署模式)
13 监听AppInit事件
14 注册异常处理
15 服务注册
16 启动注册的服务
17 加载全局中间件定义
18 监听HttpRun事件
19 执行全局中间件
20 执行路由调度(Route类dispatch方法)
21 如果开启路由则检查路由缓存
22 加载路由定义
23 监听RouteLoaded事件
24 如果开启注解路由则检测注解路由
25 路由检测(中间流程很复杂 略)
26 路由调度对象think\route\Dispatch初始化
27 设置当前请求的控制器和操作名
28 注册路由中间件
29 绑定数据模型
30 设置路由额外参数
31 执行数据自动验证
32 执行路由调度子类的exec方法返回响应think\Response对象
33 获取当前请求的控制器对象实例
34 利用反射机制注册控制器中间件
35 执行控制器方法以及前后置中间件
36 执行当前响应对象的send方法输出
37 执行HTTP应用对象的end方法善后
38 监听HttpEnd事件
39 执行中间件的end回调
40 写入当前请求的日志信息

总共有步骤有40大步。至此当前请求流程结束。说简单也简单,说复杂也蛮复杂的。这只是请求的流程,还有更多的特性和功能还未列出,拭目以待吧。

wordpress

WordPress中的后台增加子菜单到现有系统菜单里

wordpress中有许多的函数我们需要熟稔于心。需要说明的是该方式语法与add_menu_page语法完全相同,不再赘述。但仅可以增加子菜单到对应系统内置的菜单,无法为自定义菜单增加子菜单。

wordpress

自定义顶部菜单,钩子admin_bar_menu

登录wordpress的后台,在后台的顶部区域可以查看到自定义顶部菜单。这是通过将自定义函数挂载到admin_bar_menu的钩子上实现的。

add_menu_page

WordPress中的add_menu_page()函数

add_menu_page()‌函数用于在WordPress后台添加顶级菜单。这个函数允许开发者为WordPress后台添加自定义的菜单页面,包括顶级菜单和子菜单。以下是使用add_menu_page()函数添加顶级菜单的基本语法:

add_submenu_page

WordPress中的add_submenu_page()函数

add_submenu_page()是wordpress中后台显示的一个函数,用于在WordPress后台管理界面中添加一个子菜单页面。它允许开发人员将自定义功能添加到WordPress的管理菜单中,以便用户可以方便地访问和使用。

0
Would love your thoughts, please comment.x
()
x
Scroll to Top