PhalApi框架使用笔记

什么是PhapApi

PhalApi是一个PHP轻量级开源接口框架,致力于快速开发接口服务。 支持HTTP/SOAP/RPC等协议,可用于搭建接口/微服务/RESTful接口/Web Services,

.

├── PhalApi //PhalApi框架,后期可以整包升级

├── Public //对外访问目录,建议隐藏PHP实现

│ └── demo //Demo服务访问入口

├── Config //项目接口公共配置,主要有:app.php, sys.php, dbs.php

├── Data //项目接口公共数据

├── Language //项目接口公共翻译

├── Runtime //项目接口运行文件目录,用于存放日记,可软链到别的区

└── Demo //应用接口服务,名称自取,可多组

├── Api //接口响应层

├── Domain //接口领域层

├── Model //接口持久层

└── Tests //接口单元测试

PhalApi核心思想

核心思想:DI依赖注入

PhalApi框架三层结构Api+Domain+Model模式

1.1 Api层

它会通过控制器把请求转发到service层作处理,并将处理结果在页面展示,所以Api更像担当控制器(C)的作用。

1.2 Domain层

Domain层主要负责的是具体的业务实现,如数据获取,一个Domain方法就是一个小的业务具体实现(注意尽量把业务划分得细一点方便通用)

1.3 Model层

数据库操作单独提炼出来统一处理

PhalApi通用公共函数和 拦截器过滤器

公用函数和拦截器

1 公共函数

首先在我们的根目录建立一个文件夹叫做general通用的意思,里面分别有两个文件夹Common(受TP的影响)和Intercept两个文件,我们在里面放入我们自己的文件,当然需要按照正确的规则比如Common_Base等

然后我们要使用的话当然要注册我们这个general文件作为自带加载文件,然后注册自己需要用的类,如下在入口文件index.php进行注入

/** ---------------- 通用方法加载 ---------------- **/

//加载项目通用文件

DI()->loader->addDirs('General');

//通用函数基础类

DI()->base = new Common_Base();

2 拦截器

PhalApi已经有自带的拦截器,使用时一样需要先注入

PhalApi结构

加入我们需要对token进行校验,一些方法是需要验证,有些方法又是不需要验证 token.我们需要怎么实现呢?

可以在项目目录 Config/app.php进行定义一个数组,数组包括的是需要验证token的类方法名

/**

* 需要带Token的接口

*/

apiTokenRules' => array(

'User.info',

'User.updateInfo',

)

我们定义好相关需要校验token的数组,在 Filter下面的 SimpleToken 来进行校验,所有的接口访问都会走改注册了的token校验方法,我们就需要在校验方法里面做过滤拦截,

public function check() {

$service = DI()->request->get('service');

$app=DI()->config->get('app');

$app = json_decode(json_encode($app),true);

$apiTokenRules = $app['apiTokenRules'];

if (in_array($service,$apiTokenRules)) {

$allParams = DI()->request->getAll();

$token = isset($allParams['token']) ? $allParams['token'] : '';

$user_id = $allParams['user_id'];

if (empty($user_id)){

throw new PhalApi_Exception_BadRequest('缺少必要参数user_id');

}

$service_token = DI()->cache->get($user_id.'token');

if (empty($service_token)){

throw new PhalApi_Exception_BadRequest('请重新登录',99);

}else{

if (strcmp($token,$service_token) !== 0){

DI()->logger->debug('Wrong Token', array('needToken' => $service_token));

throw new PhalApi_Exception_BadRequest('Token错误,请重新登录',99);

}else{

DI()->cache->set($user_id.'token',$service_token,24*60*60);

}

}

}

}

PhalApi 第三方SDK使用集成方法

参考大神的OSC@GIT仓库 https://github.com/phalapi/phalapi-library ,仓库有比较多的SDK包 供下载使用 git clone https://github.com/phalapi/phalapi-library.git

以短信SMS 容联云短信服务器拓展为例

配置方式非常简单只需要把拓展下载下来放入Library文件内即可,然后就可以使用如下方法进行实例,文件名称以Lite.php 为准,再到根目录进行注入使用,

DI()->sms= new SMS_Lite();

项目中添加Common模块

Common目录下是放置一些公共类,这里只是作为一个通常的划分目录,如签名类,这里没有过多的规范,可以这么理解,小的公共类放到Common;若是大的公共库或依赖于第三方SDK的,可以封装到扩展类库中

image.png

使用的时候

DI()->functions = new Common_Functions();

// DI()->functions ="Common_Functions";

$res= DI()->functions->HttpGet($url);

phalapi做登录检测_PhalApi框架使用笔记相关推荐

  1. phalapi做登录检测_phalApi

    #PhalApi(π框架) - PHP轻量级开源接口框架 - V1.3.4 PhalApi,简称π框架,专注于接口开发,致力让接口开发更简单.支持HTTP.SOAP和RPC协议,可用于快速搭建微服务. ...

  2. ET6.0服务器框架学习笔记(二、一条登录协议)

    ET6.0服务器框架学习笔记(二.一条登录协议) 上一篇主要记录ET6.0的服务器启动功能,本篇主要记录ET6.0完整的一条协议,从配置到生成协议数据,到从客户端发送给服务端,再发送回客户端的流程 文 ...

  3. SSH框架搭建 笔记 (含spring注解驱动)

    分类: web 开发2014-04-27 12:33 354人阅读 评论(0) 收藏 举报 框架springinterface注解 好久没有搭建框架了,今天整理下以前的知识,整合下SSH,没想到手生了 ...

  4. .net框架读书笔记---通用对象操作(一)

    接上一篇.net框架读书笔记---基础类型,这节主要学习这样正确实现所有对象都必须提供的一组通用操作---对象的等值性和唯一性: System.Object类型提供了一个名为Equals的虚方法,其目 ...

  5. .net框架读书笔记---基础类型

    接上一篇.net框架读书笔记---值类型的装箱与拆箱, 一.Object CLR要求每个类型都最终集成自System.Object类型,这意味着以下两种定义是相同的: //隐式继承自Object cl ...

  6. 收藏 | 使用合成数据集做目标检测

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者:Sergey Nikolenko 编译:ronghuaiyang    |    AI公园 AI博士笔记 ...

  7. keras cnn注意力机制_2019 SSA-CNN(自注意力机制)目标检测算法论文阅读笔记

    背景 <SSA-CNN Semantic Self-Attention CNN for Pedestrian Detection>是2019 的工作,其作者来自于南洋理工.这篇文章主要是做 ...

  8. 《深度学习之PyTorch物体检测实战》—读书笔记

    随书代码 物体检测与PyTorch 深度学习 为了赋予计算机以人类的理解能力与逻辑思维,诞生了人工智能(Artificial Intelligence, AI)这一学科.在实现人工智能的众多算法中,机 ...

  9. Spring框架学习笔记,超详细!!(4)

    Java小白开始学习Spring框架,一方面,跟着视频学习,并记录下学习笔记,方便以后复习回顾.另一方面,发布学习笔记来约束自己,学习路程还很遥远,继续加油坚持!!!希望能帮助到大家! 另外还有我的牛 ...

  10. Spring框架自学笔记

    Spring框架自学笔记 第一章 简介 Spring是一套建筑标准,比如承重标准.丈量标准,通风标准等,并规范了结构:框架式结构,浇筑式结构,且定义了建筑的每个组成部分名字与接口,比如电力系统的接口是 ...

最新文章

  1. python画的图怎么保存_python通过PyGame绘制图像并保存为图片文件的代码
  2. 【Java基础】语言基础知识
  3. WPA/WPA2安全认证加密原理详解
  4. python中的__iter__ __reversed__ __next__
  5. 惯性传感器的卡尔曼滤波
  6. jconsole工具监控java运行情况
  7. 手机钉钉在进行视频会议时怎么录屏
  8. nodejs websocket server
  9. CactiEZ的使用
  10. 如何使用Jmeter对WebSocket进行压力测试
  11. 拓端tecdat|R语言、SAS潜类别(分类)轨迹模型LCTM分析体重指数 (BMI)数据可视化
  12. 组态软件调用matlab,()基于OPC的组态软件和MATLAB的通信实现
  13. temp不停生成临时文件 win10_Win10系统安装软件提示不能创建临时文件安装中止如何解决...
  14. CISP 考试教材《第 5 章 知识域:安全工程与运营》知识整理
  15. haswell主板linux驱动下载,Haswell核芯显卡驱动首版已发布,附下载地址
  16. Rust:FFI 编程中的 CStr 和 CString
  17. 【Linux】rm -rf 删除命令
  18. C# WPF如何设置oxyplot的折线图禁止鼠标滚轮缩放
  19. 制作3D实时交互影像产品,需要用到的技术和软件!
  20. 感动的眼泪流下来。。。。中文ecli…

热门文章

  1. 游戏里的角色都什么格式图片_格斗游戏拳皇里的八神庵,为什么在玩家心中人气一直都很高...
  2. 新版Google工具栏(For Firefox)发布
  3. windows7桌面计算机作用,win7系统虚拟桌面功能的详细教程
  4. python爬虫学习爬取股票数据
  5. 西部数码网站备案幕布及核验单填写规范
  6. Kaggle泰坦尼克预测(完整分析)
  7. SSM公司企业绩效考核管理系统
  8. 最新区块链科普图书《区块链进化史》上市
  9. PMSM矢量控制之RAMP_GEN
  10. cocoa和cocoa Touch的区别