PHP后端接口框架和逻辑处理框架之间的数据互通

PHP后端接口框架和逻辑处理框架之间的数据互通

本地环境:
  • 接口框架 PhalApi
  • 逻辑框架 Yii2
1.(逻辑框架) 先封装一个公用调用方法类 CommonFun.php
class CommonFun {
	 //创建接口请求方法
	 public static function postRestful($resturl, $postData = array(), $params = array()) {
		$requestUrl = self::createCommonUrl($resturl, $params);
		$data = self::vpost($requestUrl, $postData);
		return json_decode($data, true);
	}
	//创建拼接url方法
	 private static function createCommonUrl($rest, $params = array()) {
        $t = time();
        $sign = self::encryptAppKey(array('appid' => Yii::$app->params['interAppId'], 't' => $t, 'secret' => Yii::$app->params['interAppSecret']));
        $param = "appid=" . Yii::$app->params['interAppId'] . "&sign=" . $sign . "&t=" . $t;
        //这里的拼接接口域名和前缀逻辑可以根据自己使用的框架来创建
/*
   		// Yii::$app->params['initUrl'] 这个参数Yii2框架提供了这类参数的存放的具体类 
 		请求URL写法可以是:
		 if ($_SERVER["REMOTE_ADDR"] == '127.0.0.1') {
		     $initUrl = 'http://127.0.0.1/本地项目请求路径/';
		 } else {
		     $initUrl = 'https://www.baidu.com/线上项目请求路径/';
		 }
		 // 这里可以写一些预定义的常量调用方法时使用
		 return [];
 */
        $requestUrl = Yii::$app->params['initUrl'] . '?s=' . $rest;
        $requestUrl .= '&' . $param;
        if ($params) {
            $requestUrl .= implode('&', $params);
        }
        return $requestUrl;
    }
	//创建验签token算法类
	 private static function encryptAppKey($params) {
	 	//验签算法的规则自己可以随意,不过要有保密性,保证对称加密的规则
        ksort($params);
        $paramsStrExceptSign = '';
        foreach ($params as $val) {
            $paramsStrExceptSign .= $val;
        }
        return substr(md5($paramsStrExceptSign), 5, 17);
    }
    //创建Post Curl方法
    public static function vpost($url, $data) { // 模拟提交数据函数
        $curl = curl_init(); // 启动一个CURL会话
        curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
        curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); // 模拟用户使用的浏览器
        // curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
        // curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
        curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包x
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
        curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
        $tmpInfo = curl_exec($curl); // 执行操作
        if (curl_errno($curl)) {
            echo 'Errno' . curl_error($curl);//捕抓异常
        }
        curl_close($curl); // 关闭CURL会话
        return $tmpInfo; // 返回数据
    }
}
2. (逻辑框架)创建请求接口
// 定义方法时参数1是具体接口路径,参数2就是传输的数据
CommonFun::postRestful('App/user/add',[]);
3. (接口框架)接收请求并返回数据
namespace App\Api;
class user extends Api{
	//接收请求
	public function add() {
		//接收请求方法封装了请求类,这里就不列出来了,因为各框架的接口接收请求方式大同小异
		$user_id = $this->$user_id;
		$sql = "select * from user where user_id = {$user_id}";
		//这里的PDO类封装了数据操作类
		$res_data = $this->query($sql);
		return $res_data;
	}
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

至少名字上不能输的李先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值