开放代码社区 › PhalApi 开源接口框架
PhalApi 开源接口框架
开发工具PHPPhalApi 是面向 PHP 开发者的轻量级接口框架,用于快速构建和发布 HTTP API 服务。采用 ADM 分层模式组织接口、领域与数据代码,支持通过 service 参数路由接口,并依据参数配置与注释自动实时生成在线接口文档,支持在线测试与离线导出。适用于移动端后端、微服务接口及前后端分离项目。
仓库地址
https://gitee.com/dogstar/PhalApi.gitREADME

# [PhalApi开源接口框架 / PhalApi API Framework](https://www.phalapi.net/)
> 读音:派框架,官网:https://www.phalapi.net/
[](https://packagist.org/packages/phalapi/phalapi)
[](https://packagist.org/packages/phalapi/phalapi)
[](https://packagist.org/packages/phalapi/phalapi)
[](https://packagist.org/packages/phalapi/phalapi)
## 开发文档
专为PHPer准备的优雅而详细的开发文档,基本都能在文档找到你要的答案,请看:[PhalApi 2.x 开发文档](http://docs.phalapi.net/#/v2.0/)。
## 在线示例
+ 在线接口文档:[http://demo.phalapi.net/docs.php](http://demo.phalapi.net/docs.php)
+ 接口详情文档(以默认接口为例):[http://demo.phalapi.net/docs.php?service=App.Site.Index&detail=1&type=fold](http://demo.phalapi.net/docs.php?service=App.Site.Index&detail=1&type=fold)
+ 默认接口服务:[http://demo.phalapi.net/?s=App.Site.Index](http://demo.phalapi.net/?s=App.Site.Index)
## 快速安装
### composer一键安装
使用composer创建项目的命令,可实现一键安装。
```bash
$ composer create-project phalapi/phalapi
```
> 温馨提示:关于composer的使用,请参考[Composer 中文网 / Packagist 中国全量镜像](http://www.phpcomposer.com/)。
### 手动下载安装
或者,也可以进行手动安装。将此Git项目代码下载解压后,进行可选的composer更新,即:
```bash
$ composer update
```
## 部署
### Nginx配置
如果使用的是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```数据库配置。
```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目录添加写入权限。更多安装说明请参考文档[下载与安装](http://docs.phalapi.net/#/v2.0/download-and-setup)。
## 使用
### 调用接口
在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文件,源码片段如下:
```php
<?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'],
);
}
}
```
运行效果,截图如下:

### 查看在线接口文档
PhalApi会根据你编写的接口的参数配置和代码注释,自动实时生成在线接口文档。在线接口文档链接为:
+ 在线接口文档:[http://dev.phalapi.net/docs.php](http://dev.phalapi.net/docs.php)
浏览效果类似如下:

接口文档详情页效果类似如下:
支持在线接口测试、请求示例说明、生成离线版HTML接口文档、实时更新。

## 目录结构
```bash
./phalapi
├── README.md # 简介
├── bin # 脚本目录
├── config # 配置目录
│ ├── app.php # 应用配置
│ ├── dbs.php # 数据库配置
│ ├── di.php # 依赖服务配置
│ └── sys.php #系统配置
├── data # 数据库
│ └── phalapi.sql # 数据库安装时的文件
├── language # 翻译包
├── public # 对外访问的目录
│ ├── docs # 离线生成的HTML接口文档
│ ├── docs.php # 在线版接口文档访问入口
│ ├── index.php
│ ├── init.php # 全局初始化文件
│ ├── static # 静态资源
│ ├── uploads # 上传目录(需要有写入权限)
│ └── phalapi_logo.png # logo图片
├── runtime # 运行目录
│ ├── cache # 文件缓存
│ └── log # 文件日志
├── sdk # SDK包
├── src # 项目源代码,非常重要
│ ├── app # 接口源代码(遵循ADM模式)
│ │ ├── Api # 放置接口源代码,相当于控制器层
│ │ ├── Common # 公共代码目录,放置工具等
│ │ ├── Domain # 领域业务层,负责业务逻辑和处理
│ │ ├── functions.php # 公共函数库
│ │ └── Model # 数据源层,负责数据持久化存储及操作
│ └── view # 页面模板目录(如接口文档)
├── tests # 单元测试
└── vendor # composer包,不需要手动修改,通过composer install/update可进行安装和更新
```
## 翻译
修改```./public/init.php```文件,可设置当前语言。
```php
// 翻译语言包设定-简体中文
\PhalApi\SL('zh_cn');
// Setting lang