[转] PhalAPI快速上手

PhalAPI快速上手
 
个人做快速查找之用。

一、API 层
接口参数规则
public function getRules()
{
return [
// test 接口
'test' => [
// string, max长度
'userName' => ['name' => 'username', 'type' => 'string', 'require' => true, 'max' => 10],
// string,中文验证
'cnName' => ['name' => 'username', 'type' => 'string', 'format' => 'utf8', 'max' => 10],
// string,正则验证,邮箱验证
'email' => ['name' => 'email', 'regex' => "/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i"],

// boolean,布林类型,接收[ok,ture,success,on,yes,1]
'isRemenber' => ['name' => 'isRemenber', 'type' => 'boolean', 'default' => TRUE],

// date,日期自动转时间戳,max时间范围
'myDate' => ['name' => 'register_date', 'type' => 'date', 'format' => 'timestamp', 'max'=>'2015-01-31 23:59:59'],

// array,接收 "1,2,3" 转换成数组['1','2','3']
'uids' => ['name' => 'uids', 'type' => 'array', 'format' => 'explode', 'separator' => ',', default=>'4,5,6'],
// array,接收json {"username":"test","password":"123456"}转换成['username' => 'test', 'password' => '123456'],
'user' => ['name' => 'params', 'type' => 'array', 'format' => 'json'],

// enum,枚举只接收range,否则失败,注意数值也用字符串表示
'sex' => ['name' => 'sex', 'type' => 'enum', 'range' => array('female', 'male','0','1')],

// file,文件。max文件字节大小。range文件类型。用$_FILES['upfile']获取
'upfile' => [
'name' => 'upfile',
'type' => 'file',
'min' => 0,
'max' => 1024 * 1024,
'range' => ['image/jpeg', 'image/png'] ,
'ext' => ['jpeg', 'png']
],

// callback,自定义回调验证
'version' => ['name' => 'version', 'type' => 'callable', 'callback' => 'App\\Common\\Request\\Version::formatVersion']
],
];
}

更多 http://docs.phalapi.net/#/v2.0/api?id=参数规则配置详细说明

二、Model 层
获取 NotORM 实例

1. 继承 NotORMModel:在Model层获取
namespace App\Model;
use PhalApi\Model\NotORMModel as NotORM;
class User extends NotORM {
public function doSth() {
$orm = $this->getORM();
}
}

 
2. 助手函数:在API层中获取,目前感觉没什么卵用
$orm = \PhalApi\DI()->notorm;
 
操作 Model 类

1. 在 API 层中
// 实例化
$model = new App\Model\User();

// 增
$data = array('name' => 'phalapi');
$id = $model->insert($data);
//$id = $model->insert($data, 5); //如果是分表,可以通过第二个参数指定分表的参考ID

// 删
$model->delete(1);

// 改
$data = array('name' => 'test', 'update_time' => time());
$model->update(1, $data); //基于主键的快速更新

// 查
$row = $model->get(1);
$row = $model->get(1, 'id, name'); //取指定的字段
$row = $model->get(1, array('id', 'name')); //可以数组取指定要获取的字段

Model 层高阶操作
 
namespace App\Model;
use PhalApi\Model\NotORMModel as NotORM;
class User extends NotORM {
public function doSth() {
// 获取实例
$user = $this->getORM();

// 基本语句
$user->select()
->where()
->and()
->or()
->order()
->limit()
->group()

// 增
$user->insert();
$user->insert_update();

// 删
$user->where()->delete();

// 改
$user->where()->update();

// 查
$user->where()->fetch(); //用于循环
$user->where()->where()->fetchOne(); //只取最上一条
$user->where()->fetchAll(); //全部取出
$user->where()->count();
$user->where()->min('number');
$user->where()->max();
$user->where()->sum();
}
}

中间略……

数据库视图

可见 Phalapi 目前对关联查询支持不佳,以上方法使用起来都不是很方便,可以考虑直接在数据库建立视图来查询,这样会好很多。
 
 
原文请访问:https://me.juexe.cn/post/php-p ... .html
 

0 个评论

要回复文章请先登录注册