PhalApi开源接口框架有多好用?最全后端PHP开发攻略整理
共 8348字,需浏览 17分钟
·
2021-07-13 13:58
PhalApi开源接口框架
读音:派框架,官网:https://www.phalapi.net/
PhalApi是一个PHP轻量级开源接口框架,致力于快速开发接口服务。支持HTTP/SOAP/RPC等协议,可用于搭建接口/微服务/RESTful接口/Web Services。承诺永久免费,可用于商业用途。
它支持自动生成接口文档、自动进行参数校验、自动生成单元测试代码、自动拥有CURD数据接口、自动安装程序,让接口开发更简单、更高效、更专业。
PhalApi官网截图:
在线示例
使用PhalApi开源接口框架,能快速开发编写你的API接口,并能自动生成在线接口文档。
在线示例:
在线接口文档:http://demo.phalapi.net/docs.php
接口详情文档(以默认接口为例):http://demo.phalapi.net/docs.php?service=App.Site.Index&detail=1&type=fold
默认接口服务:http://demo.phalapi.net/?s=App.Site.Index
PhalApi会根据你编写的接口的参数配置和代码注释,自动实时生成在线接口文档。接口列表页效果类似如下:
PhalApi还支持在线接口测试、请求示例说明、生成离线版HTML接口文档、实时更新。接口文档详情页效果类似如下:
快速安装
composer一键安装
使用composer创建项目的命令,可实现一键安装。
$ composer create-project phalapi/phalapi
温馨提示:关于composer的使用,请参考Composer 中文网 / Packagist 中国全量镜像。
手动下载安装
或者,也可以进行手动安装。将此Git项目代码下载解压后,进行可选的composer更新,即:
composer update
部署
Nginx配置
如果使用的是Nginx,可参考以下配置。
server {
listen 80;
server_name dev.phalapi.net;
# 将根目录设置到public目录
root /path/to/phalapi/public;
charset utf-8;
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# 根据当前环境,选择合适的通讯方式
# 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;
}
}
配置时需要将网站根目录设置到public目录,配置保存后重启nginx。
温馨提示:推荐将访问根路径指向/path/to/phalapi/public。
数据库配置
如何使用的是MySQL数据库,参考修改./config/dbs.php
数据库配置。
return array(
/**
* DB数据库服务器集群 / database cluster
*/
'servers' => array(
'db_master' => array( // 服务器标记 / database identify
'type' => 'mysql', // 数据库类型,暂时只支持:mysql, sqlserver / database type
'host' => '127.0.0.1', // 数据库域名 / database host
'name' => 'phalapi', // 数据库名字 / database name
'user' => 'root', // 数据库用户名 / database user
'password' => '', // 数据库密码 / database password
'port' => 3306, // 数据库端口 / database port
'charset' => 'UTF8', // 数据库字符集 / database charset
'pdo_attr_string' => false, // 数据库查询结果统一使用字符串,true是,false否
'driver_options' => array( // PDO初始化时的连接选项配置
// 若需要更多配置,请参考官方文档:https://www.php.net/manual/zh/pdo.constants.php
),
),
),
// 更多代码省略……
);
最后,需要给runtime目录添加写入权限。
运行和使用
调用接口
在PhalApi,你可以通过service参数(短名字是s参数)指定需要调用的接口服务。例如,访问默认接口服务。
http://dev.phalapi.net/?s=App.Site.Index
接口请求后结果输出类似如下:
{
"ret": 200,
"data": {
"title": "Hello PhalApi",
"version": "2.4.2",
"time": 1501079142
},
"msg": ""
}
对应执行的PHP代码在./src/app/Api/Site.php文件,源码片段如下:
namespace App\Api;
use PhalApi\Api;
/**
* 默认接口服务类
* @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' => '用户名'),
),
);
}
/**
* 默认接口服务
* @desc 默认接口服务,当未指定接口服务时执行此接口服务
* @return string title 标题
* @return string content 内容
* @return string version 版本,格式:X.X.X
* @return int time 当前时间戳
* @exception 400 非法请求,参数传递错误
*/
public function index() {
return array(
'title' => 'Hello ' . $this->username,
'version' => PHALAPI_VERSION,
'time' => $_SERVER['REQUEST_TIME'],
);
}
}
运行效果,截图如下:
自动生成的接口文档详情页局部截图如下:
翻译
修改./public/init.php
文件,可设置当前语言。
// 翻译语言包设定-简体中文
\PhalApi\SL('zh_cn');
// Setting language to English
\PhalApi\SL('en');
一张图告诉你如何使用PhalApi 2.x
PhalApi开发文档
专为PHPer准备的优雅而详细的开发文档,基本都能在文档找到你要的答案,请看:PhalApi 2.x 开发文档,http://docs.phalapi.net/#/v2.0/。
文档使用markdown编写,文档页面截图如下:
开发文档大纲:
PhalApi 2.x 开发文档
前言
前言
如何升级PhalApi?
一、快速开发
1.1下载与安装
1.2 运行Hello World
1.3 如何请求接口服务
1.4 接口响应与在线调试
1.5 Api接口层
1.6 DataApi通用数据接口
1.7 Domain领域层与ADM模式
1.8 Model数据层与数据库操作
1.9 DataModel数据基类
1.10 单元测试
1.11 自动加载和PSR-4
1.12 接口文档
1.13 初始化
二、数据库
2.1 数据库连接
2.2 数据库与NotORM
2.3 数据库使用和查询
2.4 数据库分库分表策略
2.5 连接多个数据库
2.6 打印和保存SQL语句
2.7 定制你的Model基类
三、高级专题
3.1 接口参数
3.2 配置
3.3 日志
3.4 缓存
3.5 过滤器(接口签名)
3.6 COOKIE
3.7 加密
3.8 国际化
3.9 CURL请求
3.10 工具和杂项
3.11 DI服务汇总
3.12 扩展类库
3.13 SDK包的使用
3.14 脚本命令
3.15 MQ队列
3.16 错误处理
2020视频教程
B站首发,第一课~第十一课,配套有每节课的视频知识点大纲。
http://docs.phalapi.net/#/v2.0/video_1
视频课程:
PhalApi 2020视频教程
第一课 B站首发,2020视频教程开讲啦!
第二课 视频教程 - 下载和安装
第三课 视频教程 - Hello World
第四课 视频教程 - 如何请求接口服务
第五课 视频教程 - 接口响应与在线调试
第六课 视频教程 - Api接口层
第七课 视频教程 - Domain领域业务层与ADM模式解说
第八课 视频教程 - Model数据层与数据库连接
第九课 视频教程 - 测试驱动开发与PHPUnit
第十课 视频教程 - 自动加载和PSR-4
第十一课 视频教程 - 接口文档
视频教程 - 十分钟体验PhalApi Pro,让PHP接口开发更有趣!
视频教程 - 茶店应用实战
相关书籍
电子书:《初识PhalApi:探索接口服务开发的技艺》
作者:黄禅宗
图灵社区链接:https://www.ituring.com.cn/book/2405
大纲:
献词
前言
第一部分 探索
第1章 遇见PhalApi
第2章 基础入门
第3章 高级主题
第4章 不只是编码
第二部分 项目案例
第5章 全新的创业项目
第6章 重写历史遗留项目
第7章 一个极致的项目
第三部分 再进一步
第8章 PhalApi完美诠释
第9章 如何有效设计接口框架
第10章 开源这条路
附录A 接口服务文档模板
致谢
电子书:《良质!PHP企业级系统开发》
作者:黄禅宗
图灵社区链接:https://www.ituring.com.cn/book/2664
大纲:
推荐序
前言
献辞
第一部分 重新定义项目开发
第 1 章 软件开发本质论
第 2 章 选择高起点
第 3 章 向世界发布你的代码
第二部分 PHP高级编程
第 4 章 回归原生态
第 5 章 PHPUnit单元测试新解
第三部分 PHP企业级系统开发
第 6 章 核心基础模块设计
第 7 章 大型网站开发范式
第 8 章 高可用接口服务系统
第 9 章 极致的管理后台系统
第 10 章 深藏不露的计划任务系统
第四部分 追求卓越
第 11 章 如何成为明星员工
第 12 章 赢在角色转换
致谢
子项目
如果对PhalApi开源框架的内部实现、源代码和技术架构感兴趣,可以查看以下子项目。
phalapi/kernal框架内核
phalapi/notorm数据库包
PhalApi 2.x 版本的系统架构如下:
PhalApi composer 扩展
phalapi/authAuth权限扩展
phalapi/cliCLI扩展类库
phalapi/fast-routeFastRoute快速路由
phalapi-aliyun-ossPhalApi-OSS阿里云OSS包
phalapi/PHPMailer基于PHPMailer的邮件发送
phalapi/qiniu七牛云存储接口调用
phalapi/qrcodePhalApi 二维码扩展
phalapi/pinyinPhalApi 2.x 拼音扩展
phalapi/jwt基于PhalApi2的JWT拓展
chenall/phalapi-weixin微信扩展
phalapi/wechatmini微信小程序扩展
phalapi/ding-com-bot钉钉企业内部webhook机器人扩展
phalapi-pay支持微信支付和支付宝支付
温馨提示:以上扩展需要先通过composer安装再使用。更多扩展类库的使用和开发,请参考文档:PhalApi框架扩展类库:http://docs.phalapi.net/#/v2.0/library。
PhalApi应用插件
运营平台插件
应用用户插件
加密解密插件
支付宝插件
茶店微信小程序应用
在线接口文档主题包
温馨提示:应用插件和composer扩展的区别在于,应用插件颗粒度更大,功能更具体,可能不仅有数据库、接口、界面、还可能配合其他终端,并且不受composer的规范约束,是PhalApi自主发明和设计的开发方式。更多请参考:第三方应用插件开发教程:http://docs.phalapi.net/#/v2.0/how-to-dev-plugin。
基于PhalApi开发的技术产品
以下产品均使用了PhalApi开源框架,并为官方自主研发的产品,欢迎个人/团队/企业使用。
接口大师-即刻搭建您的接口开放平台(原名:PhalApi专业版)
产品官网:http://pro.phalapi.net/
果创云-后端低代码开发平台
产品官网:http://yesapi.cn/
YesDev协作云-在线协作你的全部项目
产品官网:https://www.yesdev.cn/
PhalApi 2.x 版本完美诠释
2.x 版本系统架构
主要分为三层:
phalapi/phalapi 项目应用层,可使用phalapi/phalapi搭建微服务、接口系统、RESTful、WebServices等。
扩展类库 扩展类库是指可选的、可重用的组件或类库,可以直接集成使用,由广大开发人员维护分享,对应原来的PhalApi-Library项目。
核心框架 分别两大部分,PhalApi核心部分kernal,以及优化后的notorm。
其中,各自的composer和github项目分别是:
项目 | composer | github |
---|---|---|
phalapi/phalapi | phalapi/phalapi | phalapi/phalapi |
扩展类库 | 由广大开发人员共同维护、分享,composer建议统一注册到phalapi。 | 由广大开发人员共同维护、分享,源代码可维护在开发者各自的Github仓库。 |
核心框架 | phalapi/kernal | phalapi/kernal |
框架核心部分UML静态结构图
PhalApi 2.x 版本的核心框架部分的UML静态结构图,高清版如下所示:
首先,绿色部分的PhalApi\PhalApi类是整个接口系统的访问入口,也就是项目应用系统、客户端使用的关键所在。相关的调用代码,可以参考统一入口文件的实现代码片段。
$pai = new \PhalApi\PhalApi();
$pai->response()->output();
只需要两行代码,便可完成对接口服务的请求响应。
其次,是黄色部分的Api、Domain和Model这三层,也就是我们常说的ADM分层架构。这部分,需要开发人员关注,因为这也是具体项目开发需要自己实现的部分。
最后,是红色部分的DI依赖注入,也是整个框架的核心所在。不仅在核心框架中使用频率最高,乃至在项目应用中也会经常被用到。
核心执行流程时序图
PhalApi 2.x 版本的核心执行流程时序图,与1.x 版本基本一致,可以看出,不管技术如何升级,PhalApi的最初的核心时序流程仍保持着活力。唯一变化的是各个类名。
社区沟通
派框架-PhalApi交流群-QQ群(1165人)
群号:421032344
派框架-PhalApi交流群2-QQ群(830人)
群号:459352221
PhalApi技术交流群-微信群(83人)
添加微信号:dogstarhuang 进群
代码仓库
Gitee码云 - PhalApi开源接口框架(1.7k Star)
代码链接:https://gitee.com/dogstar/PhalApi
Github - PhalApi开源接口框架(1.4 Star)
代码链接:https://github.com/phalapi/phalapi
版本更新
2021年7月发布更新了 PhalApi 2.17.2 版本。
PhalApi 2.17.2 版本
[BUG修复]
1、SQL记录,只提取部分必要的参数,避免全部记录,以及避免记录密码等敏感信息到日志文件
2、翻译和DataApi参数说明补充
3、DataModel调用不存在方法时的异常提示信息,去掉多余的美元符号
4、在线接口文档模板判断调整,避免出现warning
更多历史版本更新日记,请查看:
http://docs.phalapi.net/#/v2.0/changelog