一个简单的PHP框架的业务流程(上)
这篇文章,是慕课网课程《从零开始打造自己的PHP框架 》的学习笔记。3月份立的flag,硬着头皮完成自己的目标。
Imooc.php
文件地址:core\
Imooc.php是整个框架的入口类,就类似于网站的index.php页面。
框架的入口相当于一个公司的市场部,对应外借所有的需求。它主要包含两个功能:
- run() 开启整个业务流程
- load() 加载未声明的类文件
1- run()函数
run()函数像是一个号令,大喊一声:“开始整!”然后整个框架就是开始运行了。
但是从函数的具体内容上来看,run()就干了两件事情。
- 找一个route.php部门的人(叫$request),让它根据页面地址,做两件事情:
- 找出一个叫做$ctrlClass人,这个人是控制器部门的。
- 找出一个叫做$action的事情,
- 让$ctrlClass去做$action这件事情。
2- load()函数
load()函数可以看成是公司内部的一个联络员,用到谁了,如果没在位,它就去通知一下,把对应的人拉过来。
使用框架
在使用的时候,我们在index.php里创建一个Imooc类对象,然后再调用run()函数就可以了。
接下来,我们看一下route.php中,是如何找到$ctrlClass和$action方法的。
route.php
文件地址:core\ppphp
route.php的工作是把页面地址里的信息分门别类,保存到下面几个变量里:
- $ctrl,保存控制器的名称
- $action,保存动作的名称
- $path,保存URL中提取出来的信息。这是一个数组。
- $route,保存配置信息。
处理页面地址信息
route.php中,首先使用$_SERVER[‘REQUEST_URI’],获取页面的URL。
然后主要使用了explode()函数,以斜杠/作为分隔符,把地址分割成一段一段,保存到$path当中。t同时把前两个/对应的信息,分别保存到$ctrl和$action中。
页面地址格式
为了能让route.php正确的解析页面地址,地址的格式有必须遵守固定的规则:
www.域名.com/ctrl/action/var1/var2/var3
域名的格式就是上面的这个样子,斜杠后面的信息依次是:控制器、方法、参数1、参数2…
其他功能
除了处理页面地址信息,route.php还有两个功能:
- urlvar,获取页面中的参数,返回值从$path数组中提取
- method,获取当前页面数据传递的方式。
indexCtrl.php
文件地址:app\ctrl\indexCtrl.php
业务逻辑
Imooc.php入口类中,找到的$ctrlClass,只是控制器类的名称,我们必须在app\ctrl这个文件夹中,包含对应名称的php类文件。比如访问下面的URL时:
www.域名.com/index/index
经过route.php解析后,会加载app\ctrl\indexCtrl.php这个文件,而且文件中需要包含indexCtrl类,类中要有一个名字为index的函数。再举几个例子:
页面URL | 控制器文件 | 函数 |
---|---|---|
www.域名.com/liuyan/post | liuyanCtrl.php | post() |
www.域名.com/shuoshuo/list | shuoshuoCtrl.php | shuoshuo() |
所以要访问上面案例中对应的页面,必须在app\ctrl\文件夹下有相应的控制器文件。
indexCtrl.php
案例当中以indexCtrl.php为例进行了演示,它其中声明 了一个index()方法,用来显示www.域名.com/index/index
地址的请求。
然后在index()函数中,完成HTML()页面的渲染。
到这里,这个框架的基本业务流程,就完成了。
联系作者
One Reply to “一个简单的PHP框架的业务流程(上)”