1. 程式人生 > 程式設計 >如何用PHP寫個優雅的Mock框架

如何用PHP寫個優雅的Mock框架

前言

由於工作中前後端開發工作分離的問題,現階段後端功能怎在設計中,前端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方法中。當然你也可以在這兩個方法中寫些判斷,跳轉至具體的業務方法中。

上圖中的方法則會自動返回名字、郵箱和地址。

在這裡插入圖片描述
在這裡插入圖片描述

好處

可以不用等待後端功能都開發完畢,再呼叫資料介面,直接使用模擬資料就好。 也可以使用這個專案和後端約定好資料返回的格式,引數。到時候直接修改介面地址就好。這才是真正的解耦吧!

然後在前端中,就不用等待後端所有介面都寫好,在來開發了,

在這裡插入圖片描述
除了一些文字資料,也可以模擬頭像資訊,是不是十分強大。
在這裡插入圖片描述

說在最後

該專案還未開源,因為一切尚都剛開始,還有太多不足,只供自己使用及優化,如果你確實覺得不錯,你也可以私我獲取,謝謝支援。