A PHP framework foucs on API fast development.接口,从简单开始!PhalApi简称π框架,一个轻量级PHP开源接口框架,专注于接口服务开发。

Overview

apic

PhalApi开源接口框架 / PhalApi API Framework

读音:派框架

Latest Stable Version Total Downloads Latest Unstable Version License

Stargazers over time

Stargazers over time

开发文档 / Documents

专为PHPer准备的优雅而详细的开发文档,请看:PhalApi 2.x 开发文档
PhalApi 2.x English Docs.

在线示例 / Demo

快速安装 / Install

composer一键安装 / Install by composer

使用composer创建项目的命令,可实现一键安装。

One-click installation can be achieved by using the command of composer to create a project.

$ composer create-project phalapi/phalapi

温馨提示:关于composer的使用,请参考Composer 中文网 / Packagist 中国全量镜像

手动下载安装 / Download and Install manually

或者,也可以进行手动安装。将此Git项目代码下载解压后,进行可选的composer更新,即:
Alternatively, manual installation is also possible. Download PhalApi Project master-2x branch Source code. After downloading and unzipping, perform an optional composer update:

$ composer update

部署 / Deployment

Nginx配置 / Nginx Configuration

如果使用的是Nginx,可参考以下配置。
If you are using Nginx, you can refer to the following configuration.

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。
Point the root path of the visit to public folder. Save and reload nginx.

温馨提示:推荐将访问根路径指向/path/to/phalapi/public。
Tips: It is recommended to point the root path of the visit to /path/to/phalapi/public.

数据库配置 / Database Configuration

如何使用的是MySQL数据库,参考修改./config/dbs.php数据库配置。
If you are using MySQL, please edit ./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目录添加写入权限。更多安装说明请参考文档下载与安装
At last, add writeable permission to folder runtime. For more detail about installation, refer to Download and Installation.

使用 / Usage

调用接口 / API Request

在PhalApi,你可以通过service参数(短名字是s参数)指定需要调用的接口服务。例如,访问默认接口服务。

For PhalApi, the default communicate protocol is HTTP/HTTPS. According to the specific implementation of the API service, we could use GET or POST to request. By default, you can specify the service parameter or s for short when requesting. The default API service is App.Site.Index.

对应执行的PHP代码在./src/app/Api/Site.php文件,源码片段如下:
The source PHP code of App.Site.Index API service is at ./src/app/Api/Site.php file.

<?php
namespace App\Api;
use PhalApi\Api;

/**
 * 默认接口服务类
 * @author: dogstar <[email protected]> 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'],
        );
    }
}

接口请求后结果输出类似如下:
API result as below after requesting:

{
    "ret": 200,
    "data": {
        "title": "Hello PhalApi",
        "version": "2.4.2",
        "time": 1501079142
    },
    "msg": ""
}

运行效果,截图如下:
Runtime Sreenshot:

_20190201151943

查看在线接口文档 / Visit Online API List Documents

PhalApi会根据你编写的接口的参数配置和代码注释,自动实时生成在线接口文档。在线接口文档链接为:
PhalApi will generate realtime online API documents automatically by PHP code and PHP comments. You can visit them by:

浏览效果类似如下:
Preview:

进入Portal运营平台 / Use Portal Platform

PhalApi采用了当前流行且优秀的layuimin开发全新的管理后台,专门提供给非技术的运营人员使用(技术人员也可使用)。安装Portal前请先配置好数据库连接。如果需要单独升级Portal,可进入应用市场免费下载到本地后安装升级。

PhalApi provides a new management system and we name it Portal.

翻译 / i18n

修改./public/init.php文件,可设置当前语言。
Edit ./public/init.php file to set current language.

// 翻译语言包设定-简体中文
\PhalApi\SL('zh_cn');

// Setting language to English
\PhalApi\SL('en');

一张图告诉你如何使用PhalApi 2.x / All in One Picture

phalapi-install

子项目 / Sub Projects

还有问题,怎么办?/ Any Question?

如发现问题,或者任何问题,欢迎提交Issue到这里,或进入PhalApi开源社区
如果喜欢,请帮忙在Github码云给个Star,也可以对PhalApi进行捐赠哦 ^_^。

Welcome to report any issue here.
If you like PhalApi, welcome to give us a Star at Github.

开源许可协议 / Licence

Apache 2.0,Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。

Comments
  • 关于多数据库访问

    关于多数据库访问

    我有一组服务器A,B,C,D数据库结构完全一样.

    我有时需要访问服务器A的,有时需要访问的是服务器B的.

    除了为每个服务器的数据库建不同名的MODEL,有没有什么更好的方法?

    我目前是使用同一个MODEL,但在使用之前先判断当前要访问的是哪个数据库,预先修改默认服务器指向.

    但是这样子无法同时调取两个服务器的数据.

    opened by chenall 4
  • 按照官方手册添加Nginx配置文件api.phalapi.net后无法重启Nginx

    按照官方手册添加Nginx配置文件api.phalapi.net后无法重启Nginx

    我添加的配置如下:

    server { listen 80 ; server_name api.phalapi.net; #设置成自己的服务器的域名能远程访问了。

        root /home/ubuntu/PhalApi/Public;
        charset utf-8;
    
        # Add index.php to the list if you are using PHP
        index index.html index.htm index.php index.nginx-debian.html;
        location / {
                index index.html index.htm index.php;
                try_files $uri $uri/ =404;
        }
        location ~ \.php$ {
                root /home/ubuntu/PhalApi/Public;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
    

    官方给的参考配置也尝试过,同样无效。

    opened by JamesZhan107 3
  • 关于事务操作

    关于事务操作

    目前的事务操作是类似于这样子的

    \PhalApi\DI()->notorm->beginTransaction('db_demo');
    

    这就要求必须要知道当前操作的数据库名称.

    为什么不改到NotORMModel里面去实现这个功能?

    这样子的话操作事物可能就会比较方便

    直接在Model里面可以快速开启事物

    $this->getORM()->beginTransaction();
    
    opened by chenall 3
  • 关于请求参数规则(意见)

    关于请求参数规则(意见)

    使用这个框架有一段时间了,目前有一个小问题,就是关于参数规则的.

    个人觉得目前的参数规则的编写方式应该还有改进的余地,我的考虑主要有两点(主要还是懒^_^)

    1. 复用(可能好几个API里面有参数都是一样的).
    2. 编辑器友好(API参数传递给D之后我希望在D里面可以有代码提示,知道有哪些参数)

    当然了这些只有个人的想法,不知有没有人愿意去实现?

    opened by chenall 3
  • Response返回data,200为对象,其他为数组

    Response返回data,200为对象,其他为数组

    Response返回data,200为对象,其他(400,401等)为数组 这样会造成app端 json解析有问题, 查看源代码发现,data默认为array,而返回400的时候没有对data进行赋值

    { "ret": 200, "data": { "title": "Hello PhalApi", "version": "2.2.0", "time": 1519691269 }, "msg": "", }

    { "ret": 400, "data": [], "msg": "非法请求:用户不存在." }

    建议在PhalApi类中,第54行增加 $rs->setMsg((object)[]); 对默认值的类型进行修改.

    opened by Jackfinal 3
  • 可否添加一个“是否在不匹配时显示正则内容”的开关?

    可否添加一个“是否在不匹配时显示正则内容”的开关?

    假设 getRules 中的正则如下:

    'regex' => "/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i",
    

    我故意输入一个:email=asd,然后会提示:

    非法请求:email无法匹配/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i
    

    一般来说,这样的提示不应该只在开发环境下才会有的么?生产环境暴露正则的具体内容,可能会导致正则被绕过,从而引发安全问题。

    这个提示是 StringFormatter#filterByRegex 发出来的,我没有在里面找到关闭它的方法。

    opened by RexSkz 3
  • ?s=App.User_User.CheckSession

    ?s=App.User_User.CheckSession

    " \nFatal error: Uncaught Error: Call to a member function isLogin() on null in /usr/local/nginx/html/phalapi/src/app/Api/User/User.php:103\nStack trace:\n#0 [internal function]: App\Api\User\User->checkSession()\n#1 /usr/local/nginx/html/phalapi/vendor/phalapi/kernal/src/PhalApi.php(53): call_user_func(Array)\n#2 /usr/local/nginx/html/phalapi/public/index.php(9): PhalApi\PhalApi->response()\n#3 {main}\n thrown in /usr/local/nginx/html/phalapi/src/app/Api/User/User.php on line 103 \n"

    这个接口一直报500错误,但是看官方示例没问题。

    opened by pycamel 2
  • 规则验证require和min先后问题

    规则验证require和min先后问题

    'page' => array('name' => 'page', 'type' => 'int', 'min' => 1, 'require' => false, 'default' => 1, 'desc' => '分页'),

    分页参数是可选,但是配置了min,没有传递该参数则报错, 正常逻辑是否应为require为true之后在判断min 这个算是bug? 版本:2.12.2

    opened by HOBERHUNTER 2
  • https访问docs文档含有http链接的不安全问题

    https访问docs文档含有http链接的不安全问题

    当我访问在线接口列表的时候,浏览器会提示此页面包含其他不安全的资源,希望将所有http链接诸如"http://cdn7.phalapi.net/20180316214150_f6f390e686d0397f1f1d6a66320864d6"、"http://docs.phalapi.net/#/v2.0/"、"http://www.phalapi.net/"、"http://pro.phalapi.net/"替换为https链接

    opened by gaoweifan 2
  • 可以贴下详细的报错信息吗?谢谢

    可以贴下详细的报错信息吗?谢谢

    可以贴下详细的报错信息吗?谢谢

    Request URL: http://localhost/phalapi/public/?s=App.Hello.World&debug=1 Request Method: GET Status Code: 500 Internal Server Error Remote Address: [::1]:80 Referrer Policy: no-referrer-when-downgrade Connection: close Content-Length: 0 Content-Type: text/html; charset=UTF-8 Date: Tue, 29 Oct 2019 05:08:42 GMT Server: Apache/2.4.34 (Unix) PHP/7.1.23 X-Powered-By: PHP/7.1.23 s: App.Hello.World debug: 1

    opened by kingswjw 2
  • 关于notorm的top参数

    关于notorm的top参数

        protected function topString( $limit){
            if(isset($limit) && ($this->notORM->driver == "dblib" || $this->notORM->driver == "mssql" || $this->notORM->driver == "sqlsrv")){
                return " TOP ($this->limit)"; //! offset is not supported
            }
            return "";
        }
    

    我使用的是freetds+sqlserver, 发现sqlserver不支持这种语法会报错.

    必须去掉括号,这边如果改成以下的对其它数据库会有影响吗?

     return " TOP $this->limit"; //! offset is not supported
    
    opened by chenall 2
  • 数据库配置时,主键有不止1个,该如何配置?

    数据库配置时,主键有不止1个,该如何配置?

    例如现在的 dbs.php 配置为:

    "user" => array(
        "prefix" => "",
        "key" => "userId",
        "map" => array(
            array("db" => "db_master"),
        ),
    ),
    

    如果除了 userId 还有 xxx 另一个主键,那该如何设置呢?

    opened by Coolkkmeat 0
  • 源码直接下载后运行就提示Composer detected issues in your platform: Your Composer dependencies require a PHP version = 7.1.3".">

    源码直接下载后运行就提示Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.1.3".

    2.x源码直接下载后运行就提示Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.1.3". 文档中不是说明php版本大于5.3.3就可以了吗,我用5.6都不行,用网上的方法:将根目录中的composer.json添加

    "config": {
        "platform-check": false
    }
    

    在根目录下 composer dump 浏览器访问直接报错

    opened by yqsphp 1
Releases(2.20.0)
  • 2.20.0(Dec 25, 2022)

    PhalApi v2.20.0 (2022-12-25)

    主要更新

    • 1、PhalApi-NotORM 2.12.1 底层数据库更新,合并NotORM_Literal的参数,让其支持:name的参数绑定方式。例如MySQL在进行REPLACE()操作时。

    Bugfixed

    本次暂无。

    扩展更新

    • 1、完善phalapi/cli命令行扩展:
    • 对必须的参数进行校验;对执行接口结果进行JSON美化显示;支持多种颜色提示;
    • 支持 自定义帮助说明;同步更新文档;追加 service的输出提示;
    • 扩展接口命令列表、扩展公共命令参数。
    Source code(tar.gz)
    Source code(zip)
  • 2.19.1(Dec 5, 2022)

  • 2.19.0(Dec 2, 2022)

    PhalApi开源接口框架 v2.19.0 版本更新

    主要更新

    $ ./bin/phalapi-buildcode
    Wecome to use ./bin/phalapi-buildcode command tool v0.0.1
    
    Example:  ./bin/phalapi-buildcode --a User/Reg
    
    Usage:  Command [options] [arguments]
      --a          创建一个API层文件
      --d          创建一个Domain层文件
      --m          创建一个Model层文件
    
    • 2、在线接口文档,支持 按接口自定义标题/按接口英文名称(默认) 两种友好的接口列表排序展示方式;

    20221202-164044

    Bugfixed

    暂无。

    扩展类库

    • 1、phalapi/cli 扩展类库发布 v3.1.0 版本,同步升级所依赖的GetOpt.PHP,以及优化以命令行方式运行接口> 的提示、类型映射等;

    cli-20221123-224827

    Source code(tar.gz)
    Source code(zip)
  • 2.18.8(Nov 12, 2022)

    PhalApi 2.18.8

    [主要更新]

    • 1、新增默认的首页;
    • 2、修复admin服务注释后的报错;
    • 3、添加Hello world示例接口;
    • 4、同步升级内核 PhalApi Kernal 2.18.8,开放PDO连接获取。
    Source code(tar.gz)
    Source code(zip)
  • 2.18.7(Nov 2, 2022)

  • 2.18.1(Jul 11, 2022)

  • 2.18.0(Jun 15, 2022)

    主要更新

    • 1、API接口文档,支持@version注解
    • 2、对在线的接口列表文档和接口详情文档,优化接口请求方式GET和POST的同步高亮提示

    Bugfixed

    • 1、修复接口在线测试,无法支持GET请求
    Source code(tar.gz)
    Source code(zip)
  • 2.17.3(May 6, 2022)

    PhalApi 2.17.3

    [主要更新]

    • 1、在线接口文档,请求方式同步显示,并且修复接口标题有HTML样式时无法显示标题的问题
    • 2、集成.env文件的环境变量配置,新增文档使用.env进行环境配置

    [BUG修复]

    • 1、fix:使用window.localStorage存储接口的在线调试参数(PR提交合并,by ledccn)
    Source code(tar.gz)
    Source code(zip)
  • 2.17.2(Jul 13, 2021)

    PhalApi 2.17.2

    [BUG修复]

    • 1、SQL记录,只提取部分必要的参数,避免全部记录,以及避免记录密码等敏感信息到日志文件
    • 2、翻译和DataApi参数说明补充
    • 3、DataModel调用不存在方法时的异常提示信息,去掉多余的美元符号
    • 4、在线接口文档模板判断调整,避免出现warning
    Source code(tar.gz)
    Source code(zip)
  • 2.17.1(Dec 5, 2020)

    PhalApi 2.17.1

    [主要更新]

    • 1、新增API_NAMESPACE,方便在入口指定当前默认的命名空间,即默认模块。缺省值为:App
    • 2、新增HtmlResponse,支持简单页面渲染返回,@大卫

    [BUG修复]

    • 1、优化路由解析,解决开启后无法正常访问默认接口的问题,@大卫
    Source code(tar.gz)
    Source code(zip)
  • 2.16.0(Sep 30, 2020)

    PhalApi 2.16.0

    [主要更新]

    • 1、新增接口@method注释,可以限制接口请求方式为GET或POST或其他,同步修改接口文档列表页、接口文档详情页。
    Source code(tar.gz)
    Source code(zip)
  • 2.15.0(Jun 29, 2020)

    PhalApi 2.15.0

    [主要更新]

    • 1、添加脚本,一键生成DataModel源代码,bin/phalapi_build_data_model.php
    • 2、调整优化应用市场,向更开放的开源社区方向调整,插件源代码仓库位置

    [BUG修复]

    • 1、修复部署在非public目录下,在线接口文档样式加载失败的问题
    Source code(tar.gz)
    Source code(zip)
  • 2.4.1(Apr 29, 2020)

    PhalApi 2.14.1

    [主要更新]

    • 1、增加扩展phalapi/ding-com-bot,钉钉企业内部webhook机器人扩展,by NullUserException
    • 2、在线接口文档支持设置文档查看密码
    • 3、在线接口文档支持翻译,提供英文和简体中文,可进行语言切换
    • 4、一些已知bugfixed

    [Portal运营后台]

    • 1、一些已知bugfixed
    Source code(tar.gz)
    Source code(zip)
  • 2.14.0(Apr 26, 2020)

    PhalApi 2.14.0

    [主要更新]

    • 1、增加扩展phalapi/ding-com-bot,钉钉企业内部webhook机器人扩展,by NullUserException
    • 2、在线接口文档支持设置文档查看密码
    • 3、在线接口文档支持翻译,提供英文和简体中文,可进行语言切换
    • 4、一些已知bugfixed

    [Portal运营后台]

    • 1、一些已知bugfixed
    Source code(tar.gz)
    Source code(zip)
  • 2.13.3(Mar 31, 2020)

  • 2.13.2(Mar 31, 2020)

    PhalApi 2.13.2

    [主要更新]

    • 1、Cache具体实现类添加Cache::pull($key)新方法,实现Get&Delete操作。PhalApi\Cache接口不添加此方法,避免升级后影响已有的实现类。
    • 2、DataApi进驻Kernal内核
    • 3、上线英文文档:https://docs-en.phalapi.net/#/ ,海外,支持HTTPS,bywilliamjiangsa
    • 4、增加错误处理,PhalApi\Error,可纪录警告、提醒和致命错误
    • 5、在线接口文档,支持更多示例,如:Javascript示例、Object-C示例、Java示例、CURL示例、PHP示例、Python示例、Golang示例、C#示例
    • 6、内置User用户插件、Portal运营平台插件
    • 7、一些已知的bugfixed

    [Portal运营后台]

    • 1、添加菜单显示权限的控制,分可用户角色和指定用户
    • 2、实现插件的卸载
    • 3、管理员admin添加判断是否超管
    • 4、插件版本检测与更新提示
    • 5、首页调整
    • 6、一些已知的bugfixed
    Source code(tar.gz)
    Source code(zip)
  • 2.13.1(Mar 30, 2020)

    PhalApi 2.13.1

    [主要更新]

    • 1、Cache具体实现类添加Cache::pull($key)新方法,实现Get&Delete操作。PhalApi\Cache接口不添加此方法,避免升级后影响已有的实现类。
    • 2、DataApi进驻Kernal内核
    • 3、上线英文文档:https://docs-en.phalapi.net/#/ ,海外,支持HTTPS,bywilliamjiangsa
    • 4、增加错误处理,PhalApi\Error,可纪录警告、提醒和致命错误
    • 5、在线接口文档,支持更多示例,如:Javascript示例、Object-C示例、Java示例、CURL示例、PHP示例、Python示例、Golang示例、C#示例
    • 6、一些已知的bugfixed

    [Portal运营后台]

    • 1、添加菜单显示权限的控制,分可用户角色和指定用户
    • 2、实现插件的卸载
    • 3、管理员admin添加判断是否超管
    • 4、插件版本检测与更新提示
    • 5、一些已知的bugfixed
    Source code(tar.gz)
    Source code(zip)
  • 2.12.2(Mar 12, 2020)

    PhalApi 2.12.2

    [主要更新]

    • 1、NotORM底层包支持LEFT JOIN关联查询,新增接口alias($aliasTableName)leftJoin($joinTableName, $aliasJoinTableName, $onWhere),接口更友好。
    • 2、进行数据库查询时,以下划线+数字为后缀的表名会自动作为分表被解析,当分表策略不存在时会自动去掉数字后缀。通过新增的dbs.tables.__default__.keep_suffix_if_no_map配置项,当设置为true时可以在当分表未匹配时依然保留数字作为表后缀。分表路由中也可通过keep_suffix_if_no_map进行配置,且优先级高于__default__,同时能进行> 单独配置。
    • 3、当前环境的配置文件优先加载,新增宏定义API_MODE,可以是:dev, test, prod
    • 4、工具类PhalApi\Tool类中添加新方法:arrayExcludeKeys($array, $excludeKeys),可用于排除数组中不需要的键,例如用于排除数据库查询结果不需要的字段。
    • 5、基于layuimin开发管理后台
    • 6、在./config/di.php注入初始化文件,添加第三方插件的装载入口。
    • 7、在线接口文档UI美化,更优雅

    [Portal运营后台]

    作为历来的痛点,PhalApi虽然作为接口开源框架,但一直缺少管理后台。为此,PhalApi采用了当前流行且优秀的layuimin开发全新的管理后台。作为第一版管理后台,功能特点有:

    • 1、实现管理员创建、后台登录、修改密码和退出等功能
    • 2、添加管理后台模块接口,命名空间为Admin,并且提供管理员会话检测的PhalApi\DI->admin服务
    • 3、管理后台菜单的动态获取
    • 4、管理后台的静态页面示例调整

    [官方应用市场]

    官方应用市场已同步上线,欢迎广大开发者进驻!

    PhalApi应用市场:http://www.yesx2.com/

    [辅助更新]

    [BUG修复]

    • 1、修复mssql编码设置问题, 'NAMES' is not a recognized SET option.
    Source code(tar.gz)
    Source code(zip)
  • 2.11.0(Feb 27, 2020)

    PhalApi 2.11.0

    [主要更新]

    • 1、接口文档,接口命令空间翻译成中文,把App显示为我的应用
    • 2、在线接口文档兼容扩展类库中多级命名空间的接口,例如PhalApi\扩展名.Site.Index调整为PhalApi_扩展名.Site.Index
    • 3、优化接口文档在线测试交互,添加loading,避免接口请求失败时无法区分
    • 4、文件日记支持日记文件名前缀配置,以及改用工厂方法加系统配置方式初始化注册文件日记服务
    • 5、添加配置项sys.response.structure_map,支持接口返回结果的字段映射配置
    • 6、在线接口文档的semantic前端资源改用本地

    [辅助更新]

    [BUG修复]

    • 1、修复离线文档生成时不能指定列表和详情页模板,并且统一模板路径
    Source code(tar.gz)
    Source code(zip)
  • 2.10.1(Dec 28, 2019)

    PhalApi 2.10.1

    [主要更新]

    • 1、PDO支持具体驱动的连接选项,支持连接超时设置,避免接口长时间连接出现504 Time out
    • 2、PDO调整为有错误时抛出携带更详细错误信息的PDOExcepion,避免笼统的错误提示
    • 3、添加\PhalApi\Api::getApiCommonRules(),以便支持部分接口不需要全局应用参数的场景。
    • 4、支持接口参数置空,通过NULL或FALSE赋值可将接口参数取消
    • 5、在线接口文档,接口参数转换成客户端看到的参数类型
    • 6、接口参数规则中添加is_doc_hide配置,设置为true时,接口文档不显示此参数,但实际上仍可在PHP代码中使用
    • 7、缺少必填接口参数时,追加desc到翻译
    • 8、兼容接收JSON的参数
    Source code(tar.gz)
    Source code(zip)
  • 2.9.1(Nov 3, 2019)

    PhalApi 2.9.1

    [主要更新]

    • 1、特别注意:数据库查询返回结果默认都为字符串类型,优化为自动类型匹配,如整型。如果不需要开启,则可添加 dbs.servers.db_master.pdo_attr_string 配置项为true,> 则可以保持原来继续返回为字符串的数据库结果。如果出现:the database server cannot successfully prepare the statement 错误,请进行调试并手动检测SQL的语法正确性。
    • 2、对于接口参数规则,增加解析后的回调函数配置on_after_parse,支持多个函数名的管道配置和回调函数配置,详细请见文档说明[解析后回调函数 on_after_parse](http://docs.ph alapi.net/#/v2.0/api-params?id=%e5%85%ac%e5%85%b1%e5%8f%82%e6%95%b0%e9%85%8d%e7%bd%ae%e9%80%89%e9%a1%b9)
    • 3、添加日志接口示例

    [辅助更新]

    • 1、迁移User扩展到2.x,phalapi/user
    • 2、日志文件在di初始化时,若缺少目录权限,在调试时不抛出异常,避免初始化失败

    [BUG修复]

    + 1、PHPRPC扩展,[修复rpc请求$_GET为空问题](https://github.com/phalapi/phprpc/pull/1)
    + 2、对于array接口参数规则,当传递参数为空字符串时,解析为空数组array(),而不是包含一个空字符串的数组array('')
    
    Source code(tar.gz)
    Source code(zip)
  • 2.8.1(Sep 1, 2019)

    WX20190823-104624

    PhalApi 2.8.1

    [主要更新]

    • 1、文件日志PhalApi\Logger\FileLogger区分隐式静默和显式异常两种模式,可通过\PhalApi\DI()->debug全局模式或初始化时指定调试模式。为调试模式时,若写入失败将500异常提示
    • 1、文件配置PhalApi\Config\FileConfig区分隐式静默和显式异常两种模式,可通过\PhalApi\DI()->debug全局模式或初始化时指定调试模式。为调试模式时,若配置不存在将500异常提示

    [辅助更新]

    [BUG修复]

    • 1、URI路由匹配模式下默认接口读取不到
    • 2、配置多个数据库时候, 调用get、update时会提示 dbs.tables should not be empty (issue 97
    Source code(tar.gz)
    Source code(zip)
  • 2.8.0(Aug 23, 2019)

    WX20190823-104624

    PhalApi 2.8.0

    [主要更新]

    • 1、文件日志PhalApi\Logger\FileLogger区分隐式静默和显式异常两种模式,可通过\PhalApi\DI()->debug全局模式或初始化时指定调试模式。为调试模式时,若写入失败将500异常提示
    • 1、文件配置PhalApi\Config\FileConfig区分隐式静默和显式异常两种模式,可通过\PhalApi\DI()->debug全局模式或初始化时指定调试模式。为调试模式时,若配置不存在将500异常提示

    [辅助更新]

    [BUG修复]

    • 1、URI路由匹配模式下默认接口读取不到
    • 2、配置多个数据库时候, 调用get、update时会提示 dbs.tables should not be empty (issue 97
    Source code(tar.gz)
    Source code(zip)
    WX20190823-104624.png(22.93 KB)
  • 2.7.0(Jun 27, 2019)

    PhalApi 2.7.0

    20190701093439

    [主要更新]

    • 1、在系统配置中追加新的配置项sys.enable_sql_log:是否记录SQL日志。将上一版需要手动记录SQL日志的方式实现配置化。能不能同时记录一下当前运行的SQL命令的数据库?
    • 2、文件缓存FileCache,追加新配置项:是否格式化缓存文件名enable_file_name_format,默认为TRU E。为FALSE时不格式化文件名,方便查看,但开发者需要注意文件名的有效性。
    • 3、开放接口文档模板(即从Kernal移到PhalApi,方便项目修改);并在接口详情在线文档,追加支持JSON示例的配置和展示。接口返回的示例放置在./src/app/demos目录下,各个应用 分开,文件名以接口服务名称为文件名,后缀为.json
    • 4、数据库连接配置支持sql server(通过dblib驱动),感谢 @薛胜林提供。
    • 5、调整默认的数据库配置,表前缀prefix默认为空。此调整只对新项目的配置有影响,该配置位于./config/dbs.php
    • 6、添加sys.enable_uri_match配置,开启后可进行URI路由匹配。

    [辅助更新]

    • 1、PhalApi 2.x扩展类库,PHPMailer,添加port端口配置,可以支持465等端口。
    • 2、添加PhalApi 2.x扩展类库,MongoDB 扩展by logmecn

    [BUG修复]

    • 1、PhalApi 2.x FastRoute扩展一些bugfixed,感谢 @pluveto
    Source code(tar.gz)
    Source code(zip)
    20190701093439.jpg(21.78 KB)
  • 2.6.1(Apr 28, 2019)

    PhalApi 2.6.1

    [主要更新]

    • 1、默认MD5签名增加分隔符,防止位移篡改参数
    • 2、清除vendor下的空目录,避免composer update失败
    • 3、获取头部,兼容HTTP_USER_AGENT和User-Agent这两种写法,提高友好性
    • 4、NotORM底层包新增接口:executeSql($sql, $parameters),可用于执行带结果的原生sql。
    • 5、NotORM底层包新增支持更新单个或多个计数器的接口:updateCounter()、updateMultiCounters()

    [辅助更新]

    [BUG修复]

    • 1、修复离线文档的生成
    Source code(tar.gz)
    Source code(zip)
  • 2.5.2(Mar 25, 2019)

  • 2.5.0(Feb 25, 2019)

    PhalApi 2.5.0

    [主要更新]

    • 1、phalapi-buildtest脚本升级,优化单元测试代码生成
    • 2、NotORM底层包支持在批量插入inser_multi时使用IGNORE关键词,PhalApi-NotORM更新至2.3.0版本
    • 3、接口参数新增message配置,支持自定义友好的错误提示信息,并支持i18n国际翻译

    [辅助更新]

    • 1、七牛上传时支持文件名前缀配置 preffix
    • 2、新增扩展session 封装,由@Zhangzijing 提供
    • 3、在线接口文档界面美化
    • 4、添加默认的redis配置

    [BUG修复]

    • 1、修复在线文档数组默认值反序列化问题
    Source code(tar.gz)
    Source code(zip)
  • 2.4.2(Dec 2, 2018)

  • 2.4.0(Dec 1, 2018)

    PhalApi 2.4.0

    [主要更新]

    • 1、在线文档,样式优化,并添加接口搜索功能,方便查找

    [辅助更新]

    • 1、新增CORS跨域扩展,由@吞吞小猴 提供
    • 2、2.x文档完善,丰富数据库操作的说明及示例

    [BUG修复]

    • 1、分表策略下默认缺省表名再次获取时,因缓存击中而最终出现表_xxx不存在,bugfixed
    • 2、默认接口返回时,对于XML格式的输出进行object转字符串的报错修正
    Source code(tar.gz)
    Source code(zip)
  • 2.3.1(Oct 18, 2018)

Simple and effective multi-format Web API Server to host your PHP API as Pragmatic REST and / or RESTful API

Luracast Restler ![Gitter](https://badges.gitter.im/Join Chat.svg) Version 3.0 Release Candidate 5 Restler is a simple and effective multi-format Web

Luracast 1.4k Jan 2, 2023
FluxBB is a fast, light, user-friendly forum application for your website.

FluxBB 1.5 Readme About FluxBB is an open source forum application released under the GNU General Public Licence. It is free to download and use and w

FluxBB 477 Dec 27, 2022
A php API documentation generator, fork of Sami

Doctum, a PHP API documentation generator. Fork of Sami Curious about what Doctum generates? Have a look at the MariaDB MySQL Kbs or Laravel documenta

Code LTS 203 Dec 21, 2022
phpDocumentor is an application that is capable of analyzing your PHP source code and DocBlock comments to generate a complete set of API Documentation

phpDocumentor What is phpDocumentor? phpDocumentor is an application that is capable of analyzing your PHP source code and DocBlock comments to genera

phpDocumentor 3.7k Jan 3, 2023
An API documentation generator

Sami: an API documentation generator WARNING: Sami is not supported nor maintained anymore. Feel free to fork. Curious about what Sami generates? Have

null 2k Dec 17, 2022
Generates documentation for your REST API from annotations

NelmioApiDocBundle The NelmioApiDocBundle bundle allows you to generate a decent documentation for your APIs. Migrate from 3.x to 4.0 To migrate from

Nelmio 2.1k Jan 6, 2023
Yii2 Annotations Generate API Document Extension

Generate online api document by code annotation for yii2 easily

Trevor 16 Dec 15, 2021
Generate interactive OpenAPI documentation for your RESTful API using doctrine annotations

Generate interactive OpenAPI documentation for your RESTful API using doctrine annotations

Robert Allen 4.6k Jan 6, 2023
Sami: an API documentation generator

Sami: an API documentation generator WARNING: Sami is not supported nor maintained anymore. Feel free to fork. Curious about what Sami generates? Have

null 2k Dec 17, 2022
PHP 7.1 ready Smart and Simple Documentation for your PHP project

Smart and Readable Documentation for your PHP project ApiGen is the simplest, the easiest to use and the most modern api doc generator. It is all PHP

ApiGen 2.1k Dec 22, 2022
PHP 7.1 ready Smart and Simple Documentation for your PHP project

Smart and Readable Documentation for your PHP project ApiGen is the simplest, the easiest to use and the most modern api doc generator. It is all PHP

ApiGen 2.1k Apr 20, 2021
Learn how to implement the most important Design Patterns into your PHP application, uses PHP 8.1

Learn how to implement the most important Design Patterns into your PHP application. This project uses PHP 8.1. it has examples for each Pattern and an Article explaining how to use them step by step, their advantages, and disadvantages.

Gabriel Anhaia 203 Dec 15, 2022
Documentation Generator for PHP

phpDocumentor What is phpDocumentor? phpDocumentor is an application that is capable of analyzing your PHP source code and DocBlock comments to genera

phpDocumentor 3.7k Dec 28, 2022
Documentation generator for PHP Code using standard technology (SRC, DOCBLOCK, XML and XSLT)

phpDox phpDox is a documentation generator for PHP projects. This includes, but is not limited to, API documentation. The main focus is on enriching t

Arne Blankerts 588 Dec 22, 2022
Industrial-strength annotations for PHP

php-annotations Source-code annotations for PHP. Copyright (C) 2011-2015 Rasmus Schultz [email protected] https://github.com/php-annotations/php-anno

php-annotations 138 Dec 29, 2022
Source Code for 'PHP 8 Solutions' by David Powers

Apress Source Code This repository accompanies PHP 8 Solutions by David Powers (Apress, 2022). Download the files as a zip using the green button, or

Apress 8 Oct 27, 2022
PHP Developer Roadmap

This is PHP Developer Roadmap

TheCodeholic 2.3k Jan 6, 2023
PhpMetrics provides metrics about PHP project and classes, with beautiful and readable HTML report.

PhpMetrics provides metrics about PHP project and classes, with beautiful and readable HTML report.

PhpMetrics 2.3k Jan 5, 2023
Sunhill Framework is a simple, fast, and powerful PHP App Development Framework

Sunhill Framework is a simple, fast, and powerful PHP App Development Framework that enables you to develop more modern applications by using MVC (Model - View - Controller) pattern.

Mehmet Selcuk Batal 3 Dec 29, 2022
li₃ is the fast, flexible and most RAD development framework for PHP

li₃ You asked for a better framework. Here it is. li₃ is the fast, flexible and the most RAD development framework for PHP. A framework of firsts li₃

Union of RAD 1.2k Dec 23, 2022