# 菜單接口類 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、模板消息發送