如何用PHP写个优雅的Mock框架

2,196 阅读3分钟

前言

由于工作中前后端开发工作分离的问题,现阶段后端功能怎在设计中,前端UI也正在调整中。好像项目也无法开始。于是为了满足提前开发,不用自己创造数据,就尝试使用mock类工具。尝试过Mock.js对于硬编码的mock不是特别喜欢,也搭过express server,也不是太如我意。就尝试用php写了个小框架,配合Faker,实现了数据的模拟。在我眼中,这才是真正的分离,前后端的中间件

前期预备

修改本地host,(C:\Windows\System32\drivers\etc\hosts)配置一个虚拟域名给localhost。在最后一行中加入:

127.0.0.1	milfun.com

然后在Apache的conf文件中修改httpd-vhost.conf文件,将刚才的虚拟域名加进来。

<VirtualHost *:80>
    DocumentRoot "D:\zend\Apache24\htdocs\MilFun"
    ServerName milfun.com
    <Directory "D:\zend\Apache24\htdocs\MilFun">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

框架开发

框架目录

在这里插入图片描述
主要分为两个文件夹,MilFun为框架核心文件,app为项目实际开发目录。图中的Faker就是php的mock插件。

入口文件

在这里插入图片描述

核心函数

既然是中间件,我觉得能实现一些基本功能就好——输入与输出

基本框架:就是十分成熟的MVC结构,但是这里只实现C就好,因为是模拟接口,只要能控制业务跳转就好。 业务清晰:所以分析url地址然后分配路由,跳转至对应的php文件,也要有能力获取url中的参数,

接口数据:返回符合格式的Ajax数据。

在这里插入图片描述
我将返回数据写成了R方法,用户就可以快速返回code,message及data Json格式的数据供前端使用。

路由控制

在这里插入图片描述
例如: 当用户访问:milfun.com/jobs/ 将会自动跳到app目录下的jobs.php文件中,如果jobs.php不存在则会自动新建一个。

业务处理

在这里插入图片描述
在jobs.php中只有两个函数。All就是url中只有控制器不带任何参数,则会进入All方法中,有带参数则进入One方法中。当然你也可以在这两个方法中写些判断,跳转至具体的业务方法中。

上图中的方法则会自动返回名字、邮箱和地址。

在这里插入图片描述
在这里插入图片描述

好处

可以不用等待后端功能都开发完毕,再调用数据接口,直接使用模拟数据就好。 也可以使用这个项目和后端约定好数据返回的格式,参数。到时候直接修改接口地址就好。这才是真正的解耦吧!

然后在前端中,就不用等待后端所有接口都写好,在来开发了,

在这里插入图片描述
除了一些文字数据,也可以模拟头像信息,是不是十分强大。
在这里插入图片描述

说在最后

该项目还未开源,因为一切尚都刚开始,还有太多不足,只供自己使用及优化,如果你确实觉得不错,你也可以私我获取,谢谢支持。