# Protocol API
使用`pack`和`unpack`按照 MQTT 協議來進行打包和解析。
## MQTT 3.1.x
```php
Simps\MQTT\Protocol\V3::pack(array $array)
Simps\MQTT\Protocol\V3::unpack(string $data)
```
## MQTT 5.0
```php
Simps\MQTT\Protocol\V5::pack(array $array)
Simps\MQTT\Protocol\V5::unpack(string $data)
```
## Constants
MQTT 協議等級和名稱的常量
```php
Simps\MQTT\Protocol\ProtocolInterface::MQTT_PROTOCOL_LEVEL_3_1; // 3.1
Simps\MQTT\Protocol\ProtocolInterface::MQTT_PROTOCOL_LEVEL_3_1_1; // 3.1.1
Simps\MQTT\Protocol\ProtocolInterface::MQTT_PROTOCOL_LEVEL_5_0; // 5.0
Simps\MQTT\Protocol\ProtocolInterface::MQISDP_PROTOCOL_NAME; // MQIsdp
Simps\MQTT\Protocol\ProtocolInterface::MQTT_PROTOCOL_NAME; // MQTT
```
## ReasonCode
原因碼小于`0x80`表示操作成功完成,成功的常規原因碼為`0`,原因碼值為`0x80`或更大表示失敗。
可以使用`ReasonCode::getReasonPhrase()`方法將原因碼轉為人類可讀的名稱。
```php
Simps\MQTT\Hex\ReasonCode::getReasonPhrase(0x86);
Simps\MQTT\Hex\ReasonCode::getReasonPhrase(0x02, true);
```