Update wechatrequest.lib.php

src
pvfho47bq 6 months ago
parent 598fef975e
commit 602990fcd6

@ -1,8 +1,11 @@
<?php
namespace LaneWeChat\Core;
namespace LaneWeChat\Core; // 定义命名空间为 LaneWeChat\Core表示该类属于 LaneWeChat 模块的核心部分
/**
* 处理请求
* 微信请求处理类
*
* 该类用于处理微信公众号接收到的各种请求,包括消息和事件。
*
* Created by Lane.
* User: lane
* Date: 13-12-19
@ -10,71 +13,74 @@ namespace LaneWeChat\Core;
* Mail: lixuan868686@163.com
* Website: http://www.lanecn.com
*/
class WechatRequest {
/**
* @description 分发请求
* @param $request 请求数据
* 分发请求
*
* 根据请求的类型msgtype和事件类型event调用相应的处理方法。
*
* @param array $request 请求数据
* @return array|string 返回处理结果
*/
public static function switchType(&$request) {
$data = array();
switch ($request['msgtype']) {
//事件
// 事件类型的消息
case 'event':
$request['event'] = strtolower($request['event']);
switch ($request['event']) {
//关注
// 用户关注事件
case 'subscribe':
//二维码关注
// 二维码关注事件
if (isset($request['eventkey']) && isset($request['ticket'])) {
$data = self::eventQrsceneSubscribe($request);
//普通关注
// 普通关注事件
} else {
$data = self::eventSubscribe($request);
}
break;
//扫描二维码
// 扫描二维码事件
case 'scan':
$data = self::eventScan($request);
break;
//地理位置
// 地理位置事件
case 'location':
$data = self::eventLocation($request);
break;
//自定义菜单 - 点击菜单拉取消息时的事件推送
// 自定义菜单点击事件
case 'click':
$data = self::eventClick($request);
break;
//自定义菜单 - 点击菜单跳转链接时的事件推送
// 自定义菜单跳转链接事件
case 'view':
$data = self::eventView($request);
break;
//自定义菜单 - 扫码推事件的事件推送
// 扫码推事件
case 'scancode_push':
$data = self::eventScancodePush($request);
break;
//自定义菜单 - 扫码推事件且弹出“消息接收中”提示框的事件推送
// 扫码推事件且弹出“消息接收中”提示框
case 'scancode_waitmsg':
$data = self::eventScancodeWaitMsg($request);
break;
//自定义菜单 - 弹出系统拍照发图事件推送
// 弹出系统拍照发图事件
case 'pic_sysphoto':
$data = self::eventPicSysPhoto($request);
break;
//自定义菜单 - 弹出拍照或者相册发图事件推送
// 弹出拍照或者相册发图事件
case 'pic_photo_or_album':
$data = self::eventPicPhotoOrAlbum($request);
break;
//自定义菜单 - 弹出微信相册发图器的事件推送
// 弹出微信相册发图事件
case 'pic_weixin':
$data = self::eventPicWeixin($request);
break;
//自定义菜单 - 弹出地理位置选择器事件推送
// 弹出地理位置选择器事件
case 'location_select':
$data = self::eventLocationSelect($request);
break;
//取消关注
// 用户取消关注事件
case 'unsubscribe':
$data = self::eventUnsubscribe($request);
break;
@ -87,39 +93,41 @@ class WechatRequest{
$data = self::eventTemplateSendJobFinish($request);
break;
default:
// 收到未知类型的事件
return Msg::returnErrMsg(MsgConstant::ERROR_UNKNOW_TYPE, '收到了未知类型的消息', $request);
break;
}
break;
//文本
// 文本消息
case 'text':
$data = self::text($request);
break;
//图像
// 图片消息
case 'image':
$data = self::image($request);
break;
//语音
// 语音消息
case 'voice':
$data = self::voice($request);
break;
//视频
// 视频消息
case 'video':
$data = self::video($request);
break;
//小视频
// 小视频消息
case 'shortvideo':
$data = self::shortvideo($request);
break;
//位置
// 地理位置消息
case 'location':
$data = self::location($request);
break;
//链接
// 链接消息
case 'link':
$data = self::link($request);
break;
default:
// 收到未知类型的消息
return ResponsePassive::text($request['fromusername'], $request['tousername'], '收到未知的消息,我不知道怎么处理');
break;
}
@ -128,40 +136,3 @@ class WechatRequest{
// ... 其他方法 ...
}
类声明class WechatRequest 定义了一个名为 WechatRequest 的类,用于处理微信公众号的请求。
switchType方法用于分发请求。根据请求的类型msgtype和事件类型event调用相应的处理方法。
事件处理:对于不同类型的事件(如关注、取消关注、扫描二维码等),调用相应的事件处理方法。
消息处理:对于不同类型的消息(如文本、图像、语音等),调用相应的消息处理方法。
默认处理:如果收到未知类型的消息或事件,返回错误信息或默认响应。
'''
WechatRequest 类是微信公众号开发中的核心组件,负责接收和处理用户通过微信服务器发送的各种请求。以下是对该类主要功能的总结:
类概述:
WechatRequest 类定义在 LaneWeChat\Core 命名空间下,由开发者 Lane 创建,用于处理微信公众号的请求。
主要功能:
请求分发switchType 方法是类的入口点,它根据请求的 msgtype消息类型和 event事件类型来决定调用相应的处理函数。
事件处理:
对于事件类型的消息如用户关注、取消关注、扫描二维码等switchType 方法会进一步判断 event 类型,并调用相应的处理函数,如 eventSubscribe、eventUnsubscribe、eventScan 等。
消息处理:
对于非事件类型的消息如文本、图片、语音、视频等switchType 方法会直接调用对应的处理函数,如 text、image、voice、video 等。
默认响应:
如果收到的请求类型未知,即不匹配任何已定义的 msgtype 或 event 类型switchType 方法将返回一个默认的文本消息,告知用户收到了未知类型的消息。
错误处理:
在处理未知事件类型时switchType 方法会调用 Msg::returnErrMsg 函数返回一个错误信息,错误类型由 MsgConstant::ERROR_UNKNOW_TYPE 定义。
扩展性:
类中还预留了其他方法的占位符(// ... 其他方法 ...),这表明 WechatRequest 类可以根据需要进一步扩展,以处理更多的请求类型或业务逻辑。
代码组织:
类中的代码组织遵循了单一职责原则,每个处理函数负责一种特定类型的请求,使得代码易于维护和扩展。
命名规范:
类、方法和变量的命名都遵循了一定的规范,如 switchType 表示该方法用于切换处理不同类型的请求eventSubscribe 表示处理用户订阅事件的方法。
通过上述设计WechatRequest 类为微信公众号提供了一个灵活、可扩展且易于维护的消息和事件处理机制。
'''
Loading…
Cancel
Save