# 微信菜單項基類 Menu
**目錄 (Table of Contents)**
[TOC]
## 類基本信息
**類簡要描述:**
- 用于首次接入微信公眾號時的服務器驗證
**類名字空間:**
- endor/wechat/menu/
**類成員變量說明:**
|成員變量|類型|訪問修飾|說明
|:---- |:---|:----- |----- |
|_name| string | protected | 菜單名字|
|_type | string | protected | 菜單類型,目前支持 click,view,miniprogram|
|_media_id| string | protected | 調用新增永久素材接口返回的合法media_id|
|_children| Object(Menu)| protected | 菜單對象數組 |
## 類成員函數/方法
### __construct($name)
+ 參數列表:
|參數名|類型|必填項|說明
|:---- |:---|:----- |----- |
|$name| string | 是 | 菜單項名字 |
+ 返回值:
`無`
+ 函數說明:
`構造函數`
### getName();
+ 參數列表:
`無`
+ 返回值:
`string 返回菜單名字`
+ 函數說明:
`獲取微信菜單名字`
### getType();
+ 參數列表:
`無`
+ 返回值:
`string 返回菜單類型`
+ 函數說明:
`獲取微信菜單的類型,當前不提供setType接口,不同類型之間的菜單
通過不同子類來實現
### setMediaId($media_id)
+ 參數列表:
|參數名|類型|必填項|說明
|:---- |:---|:----- |----- |
|$media_id| string | 是 | 調用新增永久素材接口返回的合法media_id |
+ 返回值:
`string 返回菜單類型`
### getMediaId()
+ 參數列表:
`無`
+ 返回值:
`string 返回Media_id`
+ 函數說明:
獲取菜單綁定的media_id值
### addChild(Menu $menuItem)
+ 參數列表:
|參數名|類型|必填項|說明
|:---- |:---|:----- |----- |
|$menuItem| Object (Menu) | 是 | 添加一個二級菜單 |
+ 返回值:
`返回當前的操作對象`
+ 函數說明:
`給當前菜單添加一個子菜單項`
### getChildByName($name)
+ 參數列表:
|參數名|類型|必填項|說明
|:---- |:---|:----- |----- |
|$name| string | 是 | 根據name尋找子菜單 |
+ 返回值:
`mixed (object|null)`
+ 函數說明:
`根據name尋找子菜單項實例,如果找到,返回該子菜單對象的實例,否則返回null`
+ 函數示例
```PHP
$fristMenu = new ClickMenu("團購");
// 添加 團購簡介 和 團購預約 二級菜單
$fristMenu->addChild(new ClickMenu("團購簡介","groupbuy info"))
->addChild(new ViewMenu("團購預約","https://github.com/DarthAhsoka/Endor-Wechat"));
$markItemMenu = $fristMenu->getChildByName("團購預約");
if(isset($markItemMenu)
{
$markItemMenu->setUrl("https://github.com/DarthAhsoka/Endor-Wechat");
}
```
### getChlildren()
+ 參數列表:
`無`
+ 返回值:
`array `
+ 函數說明:
` 返回當前菜單下的所有子菜單`
### getChildrenLength()
+ 參數列表:
`無`
+ 返回值:
`int`
+ 函數說明:
` 返回當前菜單下的子菜單個數`
### hasChildren()
+ 參數列表:
`無`
+ 返回值:
`boolean`
+ 函數說明:
` 判斷當前菜單下是否有子菜單,返回true為有子菜單,否則沒有`
- 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、模板消息發送