如何用PHP寫個優雅的Mock框架
阿新 • • 發佈:2020-06-24
前言
由於工作中前後端開發工作分離的問題,現階段後端功能怎在設計中,前端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格式的資料供前端使用。路由控制
例如: 當使用者訪問:業務處理
在jobs.php中只有兩個函式。All就是url中只有控制器不帶任何引數,則會進入All方法中,有帶引數則進入One方法中。當然你也可以在這兩個方法中寫些判斷,跳轉至具體的業務方法中。上圖中的方法則會自動返回名字、郵箱和地址。
好處
可以不用等待後端功能都開發完畢,再呼叫資料介面,直接使用模擬資料就好。 也可以使用這個專案和後端約定好資料返回的格式,引數。到時候直接修改介面地址就好。這才是真正的解耦吧!
然後在前端中,就不用等待後端所有介面都寫好,在來開發了,
除了一些文字資料,也可以模擬頭像資訊,是不是十分強大。說在最後
該專案還未開源,因為一切尚都剛開始,還有太多不足,只供自己使用及優化,如果你確實覺得不錯,你也可以私我獲取,謝謝支援。