alisajjad/php7_api

A PHP基本启动器,用于单URL API开发。它提供基本功能,包括不同的授权处理以及Mysqli包装器。

安装: 13

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 1

分支: 1

开放问题: 0

类型:项目

1.1.0 2020-08-18 16:11 UTC

This package is auto-updated.

Last update: 2024-09-19 01:35:38 UTC


README

A PHP基本启动器,用于单URL API开发。它提供基本功能,包括不同的授权处理以及Mysqli包装器。

要求

  • PHP 7.2或更高版本,且启用mysqli扩展

安装

composer require alisajjad/php7_api

文件结构

  • app: 包含核心应用文件
  • components: 包含自定义控制器
  • connection: Mysqli包装器及结果存储对象
  • includes: 包含常用函数、特质、接口
  • tests: 测试用例
  • configs.php: 应用配置
  • routes.php: 所有应用路由

配置

所有配置都可以通过configs.php进行修改/添加

  • 数据库
    • host
    • user
    • password
    • db
    • port
    • socket
  • 环境
    • debug: 生产环境为true,开发环境为false
    • url: 生产/开发服务器地址
  • 授权
    • None: 无授权
    • Basic: 使用用户名和密码进行授权
    • Bearer: 使用token进行授权
    • Digest: 使用加密的用户名和密码进行授权
    • Header: 自定义头授权

使用方法

安装后,在routes.php中添加您的路由

[
    'welcome' => [
        'class' => \PHP7API\Components\Welcome::class,
        'method' => 'welcome'
    ],
    'welcome_args' => [
        'class' => \PHP7API\Components\Welcome::class,
        'method' => 'welcomeArgs',
        'requires' => [
            'param_1',
            'param_2',
        ]
    ],
]

其中welcome是路由名称和类,method是应用将调用的方法。The requires使得当前路由输入需要给定参数。

基本组件

namespace PHP7API\Components;


class Welcome extends Component{

    public function welcome($request, $route){

        return [
            'success' => 1,
            'message' => 'success'
        ];
    }
}

输出响应

{"success":1,"message":"success","time":"2020-03-26 21:23:18"}

$request参数包含所有输入

$route参数包含当前路由信息。

调用API

使用Curl

$ch = curl_init();

$curlData = http_build_query([
    'route' => 'welcome_args',
    'param_1' => 'value_1',
    'param_2' => 'value_2',
]);

$headers = [
    'Content-Type: application/json',
    'Authorization: Bearer your_token'
];

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($data));
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);

$response = json_decode($server_output, true);

Mysqli使用

初始化对象

$db = MySql::instance();

$db = MySql::init();

MySql::instance()使用来自configs.php的db配置

MySql::init()使用从参数提供的配置,如果没有提供参数则使用configs.php

执行查询

$result = $db->exec($sql);

$result在查询成功时为true,在查询失败时为false。

执行查询并获取结果

$result = $db->fetch($sql);

$result在查询成功时为MysqlResultCollection对象,在查询失败时为null。

MysqlResultCollection

所有查询结果都将存储在此对象中。

常用方法

  • getAll() - 返回数组中的所有行
  • getRowsNum() - 返回行数
  • isEmpty() - 检查结果是否为空
  • first() - 返回第一行
  • last() - 返回最后一行
  • nth() - 返回第n行的索引

可以通过以下方式直接访问第一行

$result->first_row_column;

$result->first()->first_row_column;

使用循环

foreach ($user as $name => $value):
    echo $value->column;
endforeach;

限制

  • 此应用仅使用一个URL处理所有路由
  • 目前只包含MySQLi包装器
  • 目前不支持OAuth1和OAuth2