# 菜单接口类 MenuApi
**目录 (Table of Contents)**
[TOC]
## 类基本信息
**类简要描述:**
- 微信菜单接口相关操作的类,用于创建微信菜单,删除微信菜单,获取微信菜单等
**类名字空间:**
- endor/wechat/menu/
**类成员变量说明:**
|成员变量|类型|访问修饰|说明
|:---- |:---|:----- |----- |
|$_menuMaps| array | protected | 菜单对象数组 |
**类继承关系:**
MenuApi -> WechatCommon
## 类成员函数/方法
### __construct($wxconfigure)
+ 参数列表:
|参数名|类型|必填项|说明
|:---- |:---|:----- |----- |
|$wxconfigure| Object (WechatConfig)| 是 | 微信配置参数对象 |
+ 返回值:
`无`
+ 函数说明:
`构造函数`
### addMenuItem(&$menuItem, $parent=null)
+ 参数列表:
|参数名|类型|必填项|说明
|:---- |:---|:----- |----- |
|$menuItem| string | 是 | 菜单对象 |
|$parent| object (Menu) | 否 | 父菜单 |
+ 返回值:
`void`
+ 函数说明:
`添加菜单项,添加在$_menuMaps对象数组中`
+ 函数示例
```PHP
$wxConfigure = new WechatConfig();
$wxConfigure->setParameter("appid",YoursAppId );
$wxConfigure->setParameter("appsecret",YoursSecret);
$wxConfigure->setParameter("access_token",ACCESS_TOKEN);
$menuApi = new MenuApi($wxConfigure);
$button = new ClickMenu("点击按钮","LVB_0001");
$menuApi->addMenuItem($button);
```
### get()
+ 参数列表:
`无`
+ 返回值:
`boolean 获取成功返回true `
+ 错误返回
`如果函数内有错误或异常,抛出 WechatException异常 `
+ 函数说明:
`返回当前微信公众号的菜单对象数组,该方法要调用后,要刷新本地的菜单结构,覆盖$_menuMaps数组`
+ 函数示例
```PHP
$wxConfigure = new WechatConfig();
$wxConfigure->setParameter("appid",YoursAppId );
$wxConfigure->setParameter("appsecret",YoursSecret);
$wxConfigure->setParameter("access_token",ACCESS_TOKEN);
$menuApi = new MenuApi($wxConfigure);
try {
// 需要先从微信服务器上获取菜单
$ret = $menuApi->get();
if($ret)
$menuArr = $menuApi->getMenu();
}
catch(WechatException $e)
{
echo $e->errorMessage();
}
```
### getMenu()
+ 参数列表:
`无`
+ 返回值:
`array`
+ 函数说明:
`获取本地的微信菜单对象数组($_menuMaps)`
+ 函数示例:
```PHP
$wxConfigure = new WechatConfig();
$wxConfigure->setParameter("appid",YoursAppId );
$wxConfigure->setParameter("appsecret",YoursSecret);
$wxConfigure->setParameter("access_token",ACCESS_TOKEN);
$menuApi = new MenuApi($wxConfigure);
try {
$ret = $menuApi ->get();
if($ret)
{
$menuArr = $menuApi->getMenu();
// 遍历菜单数组
foreach ($menuArr as $v)
{
echo $v->getName() . " (" .$v->getType() . " )" ;
echo "\r\n";
$children = $v->getChildren();
foreach($children as $n)
{
echo "\t\t".$n->getName() . " (" .$n->getType() . " )" ;
echo "\r\n";
}
}
}
}
catch(WechatException $e)
{
echo $e->errorMessage();
}
```
### delete()
+ 参数列表:
`无`
+ 返回值:
`boolean 删除成功返回true `
+ 错误返回
`如果函数内有错误或异常,抛出 WechatException异常 `
+ 函数说明:
`删除微信公众号上的所有菜单`
+ 函数示例:
```PHP
$wxConfigure = new WechatConfig();
$wxConfigure->setParameter("appid",YoursAppId );
$wxConfigure->setParameter("appsecret",YoursSecret);
$wxConfigure->setParameter("access_token",ACCESS_TOKEN);
$menuApi = new MenuApi($wxConfigure);
try {
// 删除微信公众号上的所有菜单
$menuApi->delete();
}
catch(WechatException $e)
{
echo $e->errorMessage();
}
```
### clearMenu()
+ 参数列表:
`无`
+ 返回值:
`void`
+ 函数说明:
`清空本地$_menuMaps中的所有菜单,不调用create()方法,不会影响微信公众号上的菜单`
- 1、序言
- 1.1、更新说明
- 1.2、更新计划
- 2、开始使用 Endor
- 3、目录结构
- 4、类说明
- 4.1、WechatConfig
- 4.2、WechatValid
- 4.3、WechatCommon
- 4.4、WechatException
- 4.5、基础接口
- 4.5.1、ShortUrl
- 4.5.2、WechatServerApi
- 4.6、菜单接口
- 4.6.1、菜单类设计
- 4.6.2、Menu
- 4.6.3、ClickMenu
- 4.6.4、ViewMenu
- 4.6.5、MiniProgramMenu
- 4.6.6、MenuApi
- 4.7、消息接口
- 4.7.1、Receiver
- 4.7.2、Message
- 4.7.3、EventMessage
- 4.7.4、TextMessage
- 4.7.5、ClickEventMessage
- 4.7.6、SubscribeEventMessage
- 4.7.7、UnSubscribeEventMessage
- 4.7.8、LocationEventMessage
- 4.7.9、ImageMessage
- 4.7.10、LinkMessage
- 4.7.11、NewsMessage
- 4.7.12、NewsContext
- 4.8、OAuth2.0权限验证
- 4.8.1、WechatUser
- 4.8.2、OAuthApi
- 4.9、微信支付接口
- 4.9.1、微信支付类设计
- 4.9.2、PayApi
- 4.9.3、RequestPay
- 4.9.4、ResponsePay
- 4.9.5、UnifiedOrder
- 4.9.6、JsPay
- 4.9.7、Refund
- 4.9.8、Query
- 4.9.9、Bill
- 4.9.10、NotifyData
- 4.9.11、Notify
- 4.10、模板消息接口
- 4.10.1、TemplateContext
- 4.10.2、TemplateMessageApi
- 5、使用场景
- 5.1、微信接入服务器验证
- 5.2、获取微信API令牌(access_token)
- 5.3、获取JS API
- 5.4、OAuth2.0静默登录
- 5.5、微信菜单
- 5.6、微信消息
- 5.7、微信支付
- 5.7.1、微信公众号内JsApi支付
- 5.7.2、Native 模式二 扫码支付
- 5.8、模板消息发送