一个简单的PHP框架的业务流程(上)

作者: ladeng6666 分类: PHP 发布时间: 2017-10-15 07:48 阅读: 4,236

这篇文章,是慕课网课程《从零开始打造自己的PHP框架 》的学习笔记。3月份立的flag,硬着头皮完成自己的目标。

1

Imooc.php

文件地址:core\

Imooc.php是整个框架的入口类,就类似于网站的index.php页面。

框架的入口相当于一个公司的市场部,对应外借所有的需求。它主要包含两个功能:

  • run() 开启整个业务流程
  • load() 加载未声明的类文件

1- run()函数

run()函数像是一个号令,大喊一声:“开始整!”然后整个框架就是开始运行了。

但是从函数的具体内容上来看,run()就干了两件事情。

  1. 找一个route.php部门的人(叫$request),让它根据页面地址,做两件事情:
    1. 找出一个叫做$ctrlClass人,这个人是控制器部门的。
    2. 找出一个叫做$action的事情,
  2. 让$ctrlClass去做$action这件事情。

2- load()函数

load()函数可以看成是公司内部的一个联络员,用到谁了,如果没在位,它就去通知一下,把对应的人拉过来。

使用框架

在使用的时候,我们在index.php里创建一个Imooc类对象,然后再调用run()函数就可以了。

接下来,我们看一下route.php中,是如何找到$ctrlClass和$action方法的。

2

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,获取当前页面数据传递的方式。

3

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()页面的渲染。

到这里,这个框架的基本业务流程,就完成了。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

一条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注