yyq/minimum_frame

一个极简单的、面向过程的、以 json 为输入输出的 php 框架

1.2.4 2019-08-01 03:01 UTC

README

一个极简单的、面向过程的、以 json 为输入输出的 php 框架。 在 yyq_minimalist_frame 基础上做了基础组件对象化,并且将配置文件从组件中剥离了出来。

  • 包含的功能如下:

    • 数据库支持
    • Memcache 支持
    • log 支持,默认日志文件路径在 /tmp/phplogs/ 目录下
    • 函数路由
    • 方法名检查
    • 参数检查
    • 参数签名检查
    • password 标准生成方法
    • 以 json 封装的统一格式的输入与输出
    • 可配置的跨域开关
    • 可配置的调用记录(函数名、入参、返回值)
    • 可配置的 SQL 注入检测模式(严格、宽松)
  • composer 注册在: https://packagist.org/packages/yyq/minimum_frame

URL 调用接口

一个 location 支持多个 api 调用,调用的 api 名称由 URL 参数 m 标明,调用参数统一以 json 格式写到 a 参数中,格式为:
http://域名/myapi?m=api名&a={"aaa":1,"bbb":2}
例如:http://my.com/myapi?m=test2&a={"aaa":1,"bbb":2}

返回值

  • 所有的应答返回值都封装到 json 串中,格式如下:{"err":0, "err_msg":"", "data":{}}
    • err 为错误码,0 表示成功,其它值表示失败。应用错误码最好从 -100 开始。
    • err_msg 为具体错误信息
    • data 为返回的数据,具体名称由各自的数据决定
  • 框架已用错误码:

| -9 | 执行错误 |

开发环境需要安装 composer

$ sudo apt install composer

使用方法

  1. 建立工程目录,到工程目录下,编写: composer.json
{
    "require": {
        "yyq/minimum_frame": ">=1.0.0"
    }
}
  1. 执行命令安装组件
$ composer install
更新可以执行:
$ composer update

如果报错缺:php_xmlrpc
可以安装:$ sudo apt install php7.0-xmlrpc
如果被墙,可以按下面的命令使用 composer 国内镜像:

$ composer config repo.packagist composer https://packagist.phpcomposer.com
$ composer clearcache
$ composer install
  1. 编写 test.php
<?php
require 'vendor/autoload.php';
// 上面为标准写法,也可以替换为下面的:
// require_once('vendor/yyq/minimum_frame/fxy.php');
use minimum_frame\YLog;


// 路由函数表
$route_functions = array(
    'test',
    'test2'
);

// 如果需要设置时区,可以在这里调用
date_default_timezone_set('Asia/Shanghai');

// 如果需要使用数据库,可以在这里配置
comm_create_default_mysql( $hostName, $dbName, $userName, $password, $hostPort = 3306 );

// 如果需要使用 Memcache,可以在这里配置。本例设置默认过期时间为 1 天
comm_create_default_memcache( $hostIP, 11211, 24 * 3600 );

// 设置:将 调用方法、参数、返回值 写入日志
comm_set_run_config( array('log_io' => true) );

// 设置:允许跨域访问
comm_set_run_config( array('cross_origin' => true) );

// 设置:以宽松模式检查 SQL 语句
comm_set_run_config( array('sql_injecte_loose' => true) );

// 如果需要 session 需要把这行写到 comm_frame_main 函数前;如果不需要可以不写。
session_start();

// 调用主路由函数
comm_frame_main( $route_functions );

// 以下为实现自己的功能函数
function test( $args )
{
    $result = comm_check_parameters( $args, array('email', 'password', 'signature') );
    if( 0 != $result['err'] )
        return $result;

    // 有签名参数,校验签名值
    if( !comm_check_args_signature( $args )
    {
        $result['err'] = -4;
        $result['err_msg'] = 'Signature 校验失败';
        return $result;
    }

    // do something...

    // 使用数据库
    $mysql = comm_get_default_mysql();
    $users = $mysql->selectDataEx( 'user', array('id', 'name'), array(1, 'yyq') );

    // 使用 Memcache
    comm_get_default_memcache()->setValue('users', $users);

    // 使用 Log
    comm_get_default_log()->setLogLevel( YLog::LEVEL_WARN );

    return $result;
}

function test2( $args )
{
    $result = comm_check_parameters( $args, array('aaa', 'bbb') );
    if( 0 != $result['err'] )
        return $result;

    // do something...

    return $result;
}

?>
  1. 配置
    框架可以配置一套默认的全局 YMysql、YMemcache、YLog 对象,其中 YLog 已默认创建,之后通过调用 comm_get_default_log() 直接使用。
    YMysql 与 YMemcache 可以调用 comm_create_default_mysql() 和 comm_create_default_memcache() 来创建系统默认对象,之后通过调用 comm_get_default_mysql() 和 comm_get_default_memcache() 直接使用。
    也可以自己直接 new 对象使用。

文件说明

  • fxy.php 主功能文件,包含有 comm_frame_main 等函数
  • YMySql.php 对 Mysql 功能的类实现
  • YMemcache.php 对 Memcache 功能的类实现
  • YLog.php 对日志功能的类实现