alisajjad / php7_api
A PHP基本启动器,用于单URL API开发。它提供基本功能,包括不同的授权处理以及Mysqli包装器。
1.1.0
2020-08-18 16:11 UTC
Requires
- php: >=7.2.0
- ext-json: *
- ext-mysqli: *
Requires (Dev)
- ext-curl: *
- phpunit/phpunit: ^8
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