PhalApi是一个PHP轻量级开源接口框架,致力于快速开拓接口做事。
支持HTTP/SOAP/RPC等协议,可用于搭建接口/微做事/RESTful接口/Web Services。
承诺永久免费,可用于商业用场。

它支持自动天生接口文档、自动进行参数校验、自动天生单元测试代码、自动拥有CURD数据接口、自动安装程序,让接口开拓更大略、更高效、更专业。

PhalApi官网截图:

php注册接口人人都是接口开辟年夜师这个开源项目花5分钟就能开辟一个API接口 Angular

在线示例

利用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文件,源码片段如下:

<?phpnamespace 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的最初的核心时序流程仍保持着活力。
唯一变革的是各个类名。

代码仓库

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