diff --git a/core/menu.lib.php b/core/menu.lib.php index 75eada0..e419948 100644 --- a/core/menu.lib.php +++ b/core/menu.lib.php @@ -1,10 +1,10 @@ '', 'pid'=>'', 'name'=>'', 'type'=>'', 'code'=>''), * array('id'=>'', 'pid'=>'', 'name'=>'', 'type'=>'', 'code'=>''), @@ -21,97 +21,120 @@ class Menu{ * 7、pic_weixin:弹出微信相册发图器,用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。 * 8、location_select:弹出地理位置选择器,用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。 * - * @return bool + * @return bool 返回是否成功创建菜单 */ - public static function setMenu($menuList){ - //树形排布,将一维数组转换为树形结构,以支持子菜单 + public static function setMenu($menuList) { + // 树形排布,将一维数组转换为树形结构,以支持子菜单 $menuList2 = $menuList; - foreach($menuList as $key=>$menu){ - foreach($menuList2 as $k=>$menu2){ + foreach ($menuList as $key => $menu) { + foreach ($menuList2 as $k => $menu2) { // 如果当前菜单是另一个菜单的子菜单,则添加到父菜单的sub_button中 - if($menu['id'] == $menu2['pid']){ + if ($menu['id'] == $menu2['pid']) { $menuList[$key]['sub_button'][] = $menu2; // 从数组中移除已经添加为子菜单的项 unset($menuList[$k]); } } } - //处理数据,遍历菜单数组,处理每个菜单项的详细信息 - foreach($menuList as $key=>$menu){ - // 根据菜单类型处理type和code - if($menu['type'] == 'view'){ + // 处理数据,遍历菜单数组,处理每个菜单项的详细信息 + foreach ($menuList as $key => $menu) { + // 根据菜单类型处理type和code + if ($menu['type'] == 'view') { // 对于view类型的菜单,将code值作为URL $menuList[$key]['url'] = urlencode($menu['code']); - //处理URL。因为URL不能在转换JSON时被转为UNICODE - }else if($menu['type'] == 'click'){ + } else if ($menu['type'] == 'click') { // 对于click类型的菜单,将code值作为key $menuList[$key]['key'] = $menu['code']; - }else if(!empty($menu['type'])){ + } else if (!empty($menu['type'])) { // 对于其他类型的菜单,将code值作为key,并初始化sub_button数组 $menuList[$key]['key'] = $menu['code']; - if(!isset($menu['sub_button'])) $menuList[$key]['sub_button'] = array(); - }// 移除不需要的code字段 + if (!isset($menu['sub_button'])) $menuList[$key]['sub_button'] = array(); + } + // 移除不需要的code字段 unset($menuList[$key]['code'], $menuList[$key]['id'], $menuList[$key]['pid']); - //处理PID和ID,移除不需要的id和pid字段 - //处理名字,对菜单名称进行编码,以确保在JSON序列化时不会转换成Unicode字符 + // 处理名字,对菜单名称进行编码,以确保在JSON序列化时不会转换成Unicode字符 $menuList[$key]['name'] = urlencode($menu['name']); // 如果存在子菜单,则递归处理子菜单 - if(isset($menu['sub_button'])){ + if (isset($menu['sub_button'])) { unset($menuList[$key]['type']); - foreach($menu['sub_button'] as $k=>$son){ - // 根据子菜单类型处理type和code - if($son['type'] == 'view'){ + foreach ($menu['sub_button'] as $k => $son) { + // 根据子菜单类型处理type和code + if ($son['type'] == 'view') { $menuList[$key]['sub_button'][$k]['url'] = urlencode($son['code']); - // 对子菜单URL进行编码 - }else if($son['type'] == 'click'){ + } else if ($son['type'] == 'click') { $menuList[$key]['sub_button'][$k]['key'] = $son['code']; - }else{ + } else { $menuList[$key]['sub_button'][$k]['key'] = $son['code']; $menuList[$key]['sub_button'][$k]['sub_button'] = array(); } // 移除不需要的code字段 unset($menuList[$key]['sub_button'][$k]['code'], $menuList[$key]['sub_button'][$k]['id'], $menuList[$key]['sub_button'][$k]['pid']); - // 移除不需要的id和pid字段 - //处理名字。因为汉字不能在转换JSON时被转为UNICODE + // 处理名字。因为汉字不能在转换JSON时被转为UNICODE $menuList[$key]['sub_button'][$k]['name'] = urlencode($son['name']); } } } // 整理数据格式,准备发送到微信服务器 - $data = array('button' => array_values($menuList));// 重置数组索引 - $data = json_encode($data);// 将数组转换为JSON字符串 - $data = urldecode($data);// 对JSON字符串进行解码,以确保中文字符不会被转换成Unicode字符 + $data = array('button' => array_values($menuList)); // 重置数组索引 + $data = json_encode($data); // 将数组转换为JSON字符串 + $data = urldecode($data); // 对JSON字符串进行解码,以确保中文字符不会被转换成Unicode字符 // 获取微信ACCESS_TOKEN $accessToken = AccessToken::getAccessToken(); - $url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$accessToken; - // 发起POST请求,将菜单数据发送到微信服务器 + $url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token=' . $accessToken; + // 发起POST请求,将菜单数据发送到微信服务器 $result = Curl::callWebServer($url, $data, 'POST'); - return $result['errcode'] == 0 ? true : $result;// 如果微信服务器返回errcode为0,表示菜单创建成功 - }// 返回微信服务器返回的结果 -/** + return $result['errcode'] == 0 ? true : $result; // 如果微信服务器返回errcode为0,表示菜单创建成功 + } + + /** * 获取微信菜单 * 此方法用于从微信服务器获取当前公众号的自定义菜单 * * @return bool|mixed 获取成功返回菜单信息,失败返回错误信息 */ - public static function getMenu(){ - // 获取微信ACCESS_TOKEN + public static function getMenu() { + // 获取微信ACCESS_TOKEN $accessToken = AccessToken::getAccessToken(); - $url = 'https://api.weixin.qq.com/cgi-bin/menu/get?access_token='.$accessToken; + $url = 'https://api.weixin.qq.com/cgi-bin/menu/get?access_token=' . $accessToken; // 发起GET请求,从微信服务器获取菜单信息 return Curl::callWebServer($url, '', 'GET'); } -/** + + /** * 删除微信菜单 * 此方法用于删除当前公众号的自定义菜单 * * @return bool|mixed 删除成功返回{"errcode":0,"errmsg":"ok"},失败返回错误信息 */ - public static function delMenu(){ + public static function delMenu() { // 获取微信ACCESS_TOKEN $accessToken = AccessToken::getAccessToken(); - $url = 'https://api.weixin.qq.com/cgi-bin/menu/delete?access_token='.$accessToken; + $url = 'https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=' . $accessToken; // 发起GET请求,删除微信服务器上的自定义菜单 return Curl::callWebServer($url, '', 'GET'); } -} \ No newline at end of file +} +命名空间声明:namespace LaneWeChat\Core; 定义了类的命名空间,表明这个类属于LaneWeChat模块的核心部分。 +类定义:class Menu 定义了一个用于管理微信自定义菜单的类。 +setMenu方法:用于创建自定义菜单。处理菜单数据,将一维数组转换为树形结构,支持子菜单,并发送POST请求到微信服务器。 +getMenu方法:用于获取当前公众号的自定义菜单信息。发送GET请求到微信服务器。 +delMenu方法:用于删除当前公众号的自定义菜单。发送GET请求到微信服务器 +命名空间声明:namespace LaneWeChat\Core; 定义了类的命名空间,表明这个类属于LaneWeChat模块的核心部分。 +类定义:class Menu 定义了一个用于管理微信自定义菜单的类。 +setMenu方法:用于创建自定义菜单。处理菜单数据,将一维数组转换为树形结构,支持子菜单,并发送POST请求到微信服务器。 +getMenu方法:用于获取当前公众号的自定义菜单信息。发送GET请求到微信服务器。 +delMenu方法:用于删除当前公众号的自定义菜单。发送GET请求到微信服务器 +命名空间声明:namespace LaneWeChat\Core; 定义了类的命名空间,表明这个类属于LaneWeChat模块的核心部分。 +类定义:class Menu 定义了一个用于管理微信自定义菜单的类。 +setMenu方法:用于创建自定义菜单。处理菜单数据,将一维数组转换为树形结构,支持子菜单,并发送POST请求到微信服务器。 +getMenu方法:用于获取当前公众号的自定义菜单信息。发送GET请求到微信服务器。 +delMenu方法:用于删除当前公众号的自定义菜单。发送GET请求到微信服务器 +命名空间声明:namespace LaneWeChat\Core; 定义了类的命名空间,表明这个类属于LaneWeChat模块的核心部分。 +类定义:class Menu 定义了一个用于管理微信自定义菜单的类。 +setMenu方法:用于创建自定义菜单。处理菜单数据,将一维数组转换为树形结构,支持子菜单,并发送POST请求到微信服务器。 +getMenu方法:用于获取当前公众号的自定义菜单信息。发送GET请求到微信服务器。 +delMenu方法:用于删除当前公众号的自定义菜单。发送GET请求到微信服务器命名空间声明:namespace LaneWeChat\Core; 定义了类的命名空间,表明这个类属于LaneWeChat模块的核心部分。 +类定义:class Menu 定义了一个用于管理微信自定义菜单的类。 +setMenu方法:用于创建自定义菜单。处理菜单数据,将一维数组转换为树形结构,支持子菜单,并发送POST请求到微信服务器。 +getMenu方法:用于获取当前公众号的自定义菜单信息。发送GET请求到微信服务器。 +delMenu方法:用于删除当前公众号的自定义菜单。发送GET请求到微信服务器