PhalApi開源接口框架有多好用?最全后端PHP開發(fā)攻略整理

PhalApi開源接口框架
讀音:派框架,官網(wǎng):https://www.phalapi.net/
PhalApi是一個PHP輕量級開源接口框架,致力于快速開發(fā)接口服務(wù)。支持HTTP/SOAP/RPC等協(xié)議,可用于搭建接口/微服務(wù)/RESTful接口/Web Services。承諾永久免費,可用于商業(yè)用途。
它支持自動生成接口文檔、自動進行參數(shù)校驗、自動生成單元測試代碼、自動擁有CURD數(shù)據(jù)接口、自動安裝程序,讓接口開發(fā)更簡單、更高效、更專業(yè)。
PhalApi官網(wǎng)截圖:

在線示例
使用PhalApi開源接口框架,能快速開發(fā)編寫你的API接口,并能自動生成在線接口文檔。
在線示例:
在線接口文檔:http://demo.phalapi.net/docs.php
接口詳情文檔(以默認接口為例):http://demo.phalapi.net/docs.php?service=App.Site.Index&detail=1&type=fold
默認接口服務(wù):http://demo.phalapi.net/?s=App.Site.Index
PhalApi會根據(jù)你編寫的接口的參數(shù)配置和代碼注釋,自動實時生成在線接口文檔。接口列表頁效果類似如下:

PhalApi還支持在線接口測試、請求示例說明、生成離線版HTML接口文檔、實時更新。接口文檔詳情頁效果類似如下:

快速安裝
composer一鍵安裝
使用composer創(chuàng)建項目的命令,可實現(xiàn)一鍵安裝。
$ composer create-project phalapi/phalapi溫馨提示:關(guān)于composer的使用,請參考Composer 中文網(wǎng) / Packagist 中國全量鏡像。
手動下載安裝
或者,也可以進行手動安裝。將此Git項目代碼下載解壓后,進行可選的composer更新,即:
composer update部署
Nginx配置
如果使用的是Nginx,可參考以下配置。
server {listen 80;server_name dev.phalapi.net;# 將根目錄設(shè)置到public目錄root /path/to/phalapi/public;charset utf-8;location / {index index.php;}location ~ \.php$ {fastcgi_split_path_info ^(.+\.php)(/.+)$;# 根據(jù)當前環(huán)境,選擇合適的通訊方式# fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}}
配置時需要將網(wǎng)站根目錄設(shè)置到public目錄,配置保存后重啟nginx。
溫馨提示:推薦將訪問根路徑指向/path/to/phalapi/public。
數(shù)據(jù)庫配置
如何使用的是MySQL數(shù)據(jù)庫,參考修改./config/dbs.php數(shù)據(jù)庫配置。
return array(/*** DB數(shù)據(jù)庫服務(wù)器集群 / database cluster*/'servers' => array('db_master' => array( // 服務(wù)器標記 / database identify'type' => 'mysql', // 數(shù)據(jù)庫類型,暫時只支持:mysql, sqlserver / database type'host' => '127.0.0.1', // 數(shù)據(jù)庫域名 / database host'name' => 'phalapi', // 數(shù)據(jù)庫名字 / database name'user' => 'root', // 數(shù)據(jù)庫用戶名 / database user'password' => '', // 數(shù)據(jù)庫密碼 / database password'port' => 3306, // 數(shù)據(jù)庫端口 / database port'charset' => 'UTF8', // 數(shù)據(jù)庫字符集 / database charset'pdo_attr_string' => false, // 數(shù)據(jù)庫查詢結(jié)果統(tǒng)一使用字符串,true是,false否'driver_options' => array( // PDO初始化時的連接選項配置// 若需要更多配置,請參考官方文檔:https://www.php.net/manual/zh/pdo.constants.php),),),// 更多代碼省略……);
最后,需要給runtime目錄添加寫入權(quán)限。
運行和使用
調(diào)用接口
在PhalApi,你可以通過service參數(shù)(短名字是s參數(shù))指定需要調(diào)用的接口服務(wù)。例如,訪問默認接口服務(wù)。
http://dev.phalapi.net/?s=App.Site.Index接口請求后結(jié)果輸出類似如下:
{"ret": 200,"data": {"title": "Hello PhalApi","version": "2.4.2","time": 1501079142},"msg": ""}
對應(yīng)執(zhí)行的PHP代碼在./src/app/Api/Site.php文件,源碼片段如下:
namespace App\Api;use PhalApi\Api;/*** 默認接口服務(wù)類* @author: dogstar <chanzonghuang@gmail.com> 2014-10-04*/class Site extends Api {public function getRules() {return array('index' => array('username' => array('name' => 'username', 'default' => 'PhalApi', 'desc' => '用戶名'),),);}/*** 默認接口服務(wù)* @desc 默認接口服務(wù),當未指定接口服務(wù)時執(zhí)行此接口服務(wù)* @return string title 標題* @return string content 內(nèi)容* @return string version 版本,格式:X.X.X* @return int time 當前時間戳* @exception 400 非法請求,參數(shù)傳遞錯誤*/public function index() {return array('title' => 'Hello ' . $this->username,'version' => PHALAPI_VERSION,'time' => $_SERVER['REQUEST_TIME'],);}}
運行效果,截圖如下:

自動生成的接口文檔詳情頁局部截圖如下:

翻譯
修改./public/init.php文件,可設(shè)置當前語言。
// 翻譯語言包設(shè)定-簡體中文\PhalApi\SL('zh_cn');// Setting language to English\PhalApi\SL('en');
一張圖告訴你如何使用PhalApi 2.x

PhalApi開發(fā)文檔
專為PHPer準備的優(yōu)雅而詳細的開發(fā)文檔,基本都能在文檔找到你要的答案,請看:PhalApi 2.x 開發(fā)文檔,http://docs.phalapi.net/#/v2.0/。
文檔使用markdown編寫,文檔頁面截圖如下:

開發(fā)文檔大綱:
PhalApi 2.x 開發(fā)文檔前言前言如何升級PhalApi?一、快速開發(fā)1.1下載與安裝1.2 運行Hello World1.3 如何請求接口服務(wù)1.4 接口響應(yīng)與在線調(diào)試1.5 Api接口層1.6 DataApi通用數(shù)據(jù)接口1.7 Domain領(lǐng)域?qū)优cADM模式1.8 Model數(shù)據(jù)層與數(shù)據(jù)庫操作1.9 DataModel數(shù)據(jù)基類1.10 單元測試1.11 自動加載和PSR-41.12 接口文檔1.13 初始化二、數(shù)據(jù)庫2.1 數(shù)據(jù)庫連接2.2 數(shù)據(jù)庫與NotORM2.3 數(shù)據(jù)庫使用和查詢2.4 數(shù)據(jù)庫分庫分表策略2.5 連接多個數(shù)據(jù)庫2.6 打印和保存SQL語句2.7 定制你的Model基類三、高級專題3.1 接口參數(shù)3.2 配置3.3 日志3.4 緩存3.5 過濾器(接口簽名)3.6 COOKIE3.7 加密3.8 國際化3.9 CURL請求3.10 工具和雜項3.11 DI服務(wù)匯總3.12 擴展類庫3.13 SDK包的使用3.14 腳本命令3.15 MQ隊列3.16 錯誤處理
2020視頻教程
B站首發(fā),第一課~第十一課,配套有每節(jié)課的視頻知識點大綱。
http://docs.phalapi.net/#/v2.0/video_1
視頻課程:
PhalApi 2020視頻教程第一課 B站首發(fā),2020視頻教程開講啦!第二課 視頻教程 - 下載和安裝第三課 視頻教程 - Hello World第四課 視頻教程 - 如何請求接口服務(wù)第五課 視頻教程 - 接口響應(yīng)與在線調(diào)試第六課 視頻教程 - Api接口層第七課 視頻教程 - Domain領(lǐng)域業(yè)務(wù)層與ADM模式解說第八課 視頻教程 - Model數(shù)據(jù)層與數(shù)據(jù)庫連接第九課 視頻教程 - 測試驅(qū)動開發(fā)與PHPUnit第十課 視頻教程 - 自動加載和PSR-4第十一課 視頻教程 - 接口文檔視頻教程 - 十分鐘體驗PhalApi Pro,讓PHP接口開發(fā)更有趣!視頻教程 - 茶店應(yīng)用實戰(zhàn)
相關(guān)書籍
電子書:《初識PhalApi:探索接口服務(wù)開發(fā)的技藝》
作者:黃禪宗
圖靈社區(qū)鏈接:https://www.ituring.com.cn/book/2405
大綱:
獻詞前言第一部分 探索第1章 遇見PhalApi第2章 基礎(chǔ)入門第3章 高級主題第4章 不只是編碼第二部分 項目案例第5章 全新的創(chuàng)業(yè)項目第6章 重寫歷史遺留項目第7章 一個極致的項目第三部分 再進一步第8章 PhalApi完美詮釋第9章 如何有效設(shè)計接口框架第10章 開源這條路附錄A 接口服務(wù)文檔模板致謝

電子書:《良質(zhì)!PHP企業(yè)級系統(tǒng)開發(fā)》
作者:黃禪宗
圖靈社區(qū)鏈接:https://www.ituring.com.cn/book/2664
大綱:
推薦序前言獻辭第一部分 重新定義項目開發(fā)第 1 章 軟件開發(fā)本質(zhì)論第 2 章 選擇高起點第 3 章 向世界發(fā)布你的代碼第二部分 PHP高級編程第 4 章 回歸原生態(tài)第 5 章 PHPUnit單元測試新解第三部分 PHP企業(yè)級系統(tǒng)開發(fā)第 6 章 核心基礎(chǔ)模塊設(shè)計第 7 章 大型網(wǎng)站開發(fā)范式第 8 章 高可用接口服務(wù)系統(tǒng)第 9 章 極致的管理后臺系統(tǒng)第 10 章 深藏不露的計劃任務(wù)系統(tǒng)第四部分 追求卓越第 11 章 如何成為明星員工第 12 章 贏在角色轉(zhuǎn)換致謝

子項目
如果對PhalApi開源框架的內(nèi)部實現(xiàn)、源代碼和技術(shù)架構(gòu)感興趣,可以查看以下子項目。
phalapi/kernal框架內(nèi)核
phalapi/notorm數(shù)據(jù)庫包
PhalApi 2.x 版本的系統(tǒng)架構(gòu)如下:

PhalApi composer 擴展
phalapi/authAuth權(quán)限擴展
phalapi/cliCLI擴展類庫
phalapi/fast-routeFastRoute快速路由
phalapi-aliyun-ossPhalApi-OSS阿里云OSS包
phalapi/PHPMailer基于PHPMailer的郵件發(fā)送
phalapi/qiniu七牛云存儲接口調(diào)用
phalapi/qrcodePhalApi 二維碼擴展
phalapi/pinyinPhalApi 2.x 拼音擴展
phalapi/jwt基于PhalApi2的JWT拓展
chenall/phalapi-weixin微信擴展
phalapi/wechatmini微信小程序擴展
phalapi/ding-com-bot釘釘企業(yè)內(nèi)部webhook機器人擴展
phalapi-pay支持微信支付和支付寶支付
溫馨提示:以上擴展需要先通過composer安裝再使用。更多擴展類庫的使用和開發(fā),請參考文檔:PhalApi框架擴展類庫:http://docs.phalapi.net/#/v2.0/library。
PhalApi應(yīng)用插件
運營平臺插件
應(yīng)用用戶插件
加密解密插件
支付寶插件
茶店微信小程序應(yīng)用
在線接口文檔主題包
溫馨提示:應(yīng)用插件和composer擴展的區(qū)別在于,應(yīng)用插件顆粒度更大,功能更具體,可能不僅有數(shù)據(jù)庫、接口、界面、還可能配合其他終端,并且不受composer的規(guī)范約束,是PhalApi自主發(fā)明和設(shè)計的開發(fā)方式。更多請參考:第三方應(yīng)用插件開發(fā)教程:http://docs.phalapi.net/#/v2.0/how-to-dev-plugin。
基于PhalApi開發(fā)的技術(shù)產(chǎn)品
以下產(chǎn)品均使用了PhalApi開源框架,并為官方自主研發(fā)的產(chǎn)品,歡迎個人/團隊/企業(yè)使用。
接口大師-即刻搭建您的接口開放平臺(原名:PhalApi專業(yè)版)
產(chǎn)品官網(wǎng):http://pro.phalapi.net/

果創(chuàng)云-后端低代碼開發(fā)平臺
產(chǎn)品官網(wǎng):http://yesapi.cn/

YesDev協(xié)作云-在線協(xié)作你的全部項目
產(chǎn)品官網(wǎng):https://www.yesdev.cn/

PhalApi 2.x 版本完美詮釋
2.x 版本系統(tǒng)架構(gòu)
主要分為三層:
phalapi/phalapi 項目應(yīng)用層,可使用phalapi/phalapi搭建微服務(wù)、接口系統(tǒng)、RESTful、WebServices等。
擴展類庫 擴展類庫是指可選的、可重用的組件或類庫,可以直接集成使用,由廣大開發(fā)人員維護分享,對應(yīng)原來的PhalApi-Library項目。
核心框架 分別兩大部分,PhalApi核心部分kernal,以及優(yōu)化后的notorm。
其中,各自的composer和github項目分別是:
| 項目 | composer | github |
|---|---|---|
| phalapi/phalapi | phalapi/phalapi | phalapi/phalapi |
| 擴展類庫 | 由廣大開發(fā)人員共同維護、分享,composer建議統(tǒng)一注冊到phalapi。 | 由廣大開發(fā)人員共同維護、分享,源代碼可維護在開發(fā)者各自的Github倉庫。 |
| 核心框架 | phalapi/kernal | phalapi/kernal |
框架核心部分UML靜態(tài)結(jié)構(gòu)圖
PhalApi 2.x 版本的核心框架部分的UML靜態(tài)結(jié)構(gòu)圖,高清版如下所示:

首先,綠色部分的PhalApi\PhalApi類是整個接口系統(tǒng)的訪問入口,也就是項目應(yīng)用系統(tǒng)、客戶端使用的關(guān)鍵所在。相關(guān)的調(diào)用代碼,可以參考統(tǒng)一入口文件的實現(xiàn)代碼片段。
$pai = new \PhalApi\PhalApi();$pai->response()->output();
只需要兩行代碼,便可完成對接口服務(wù)的請求響應(yīng)。
其次,是黃色部分的Api、Domain和Model這三層,也就是我們常說的ADM分層架構(gòu)。這部分,需要開發(fā)人員關(guān)注,因為這也是具體項目開發(fā)需要自己實現(xiàn)的部分。
最后,是紅色部分的DI依賴注入,也是整個框架的核心所在。不僅在核心框架中使用頻率最高,乃至在項目應(yīng)用中也會經(jīng)常被用到。
核心執(zhí)行流程時序圖
PhalApi 2.x 版本的核心執(zhí)行流程時序圖,與1.x 版本基本一致,可以看出,不管技術(shù)如何升級,PhalApi的最初的核心時序流程仍保持著活力。唯一變化的是各個類名。

社區(qū)溝通
派框架-PhalApi交流群-QQ群(1165人)
群號:421032344
派框架-PhalApi交流群2-QQ群(830人)
群號:459352221
PhalApi技術(shù)交流群-微信群(83人)
添加微信號:dogstarhuang 進群
代碼倉庫
Gitee碼云 - PhalApi開源接口框架(1.7k Star)
代碼鏈接:https://gitee.com/dogstar/PhalApi
Github - PhalApi開源接口框架(1.4 Star)
代碼鏈接:https://github.com/phalapi/phalapi
版本更新
2021年7月發(fā)布更新了 PhalApi 2.17.2 版本。
PhalApi 2.17.2 版本
[BUG修復(fù)]
1、SQL記錄,只提取部分必要的參數(shù),避免全部記錄,以及避免記錄密碼等敏感信息到日志文件
2、翻譯和DataApi參數(shù)說明補充
3、DataModel調(diào)用不存在方法時的異常提示信息,去掉多余的美元符號
4、在線接口文檔模板判斷調(diào)整,避免出現(xiàn)warning
更多歷史版本更新日記,請查看:
http://docs.phalapi.net/#/v2.0/changelog
