Skip to content

Commit d89ec0d

Browse files
committed
更新文档
1 parent 71929ca commit d89ec0d

File tree

2 files changed

+100
-2
lines changed

2 files changed

+100
-2
lines changed

README.md

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,100 @@
55
**<p align="center">🐇 A PHP implementation of MySQL Protocol. 🐇</p>**
66

77
# A PHP implementation of MySQL Protocol
8+
9+
## 安装
10+
11+
### 依赖
12+
13+
- PHP >= 8.1
14+
- [workerman](https://github.com/walkor/workerman) >= 4.0 【可选,`workerman`环境】
15+
16+
### 安装
17+
18+
```shel
19+
composer require workbunny/mysql-protocol
20+
```
21+
22+
## 使用
23+
24+
### Binary 二进制流
25+
26+
- `Binary`提供了二进制流和字节组之间的互转能力(注:PHP是二进制安全语言)
27+
- `Binary`提供了基础的字节组读写操作能力,读写操作的指针相互隔离,读写指针默认从0位开始
28+
- `payload`支持传递`字符串``字节数组``iterable类型的字节组``null`
29+
30+
```php
31+
use Workbunny\MysqlProtocol\Utils\Binary;
32+
33+
$binary = new Binary("workbunny");
34+
# 输出字节组
35+
$binary->unpack();
36+
# 输出字符串(输入明文则返回明文,输入二进制数据则返回二进制)
37+
$binary->pack();
38+
# 输出原始负载
39+
$binary->payload();
40+
```
41+
42+
####
43+
44+
- 默认以0位开始,每次操作都会递增相应字节位置
45+
46+
```php
47+
use Workbunny\MysqlProtocol\Utils\Binary;
48+
49+
$binary = new Binary("workbunny");
50+
51+
# 设置读取指针
52+
$binary->setReadCursor();
53+
# 获取读取指针
54+
$binary->getReadCursor();
55+
56+
# 读取一个字节
57+
$binary->readByte();
58+
# 读取多个字节
59+
$binary->readBytes();
60+
# 读取一个整数(长度编码)
61+
$binary->readLenEncInt();
62+
# 读取一个字符串(长度编码)
63+
$binary->readLenEncString();
64+
# 读取一个无符号整数(长度编码)
65+
$binary->readUB();
66+
# 读取一个字符串(以NULL结束)
67+
$binary->readNullTerminated();
68+
```
69+
70+
71+
####
72+
73+
- 默认以0位开始,每次操作都会递增相应字节位置
74+
75+
```php
76+
use Workbunny\MysqlProtocol\Utils\Binary;
77+
78+
$binary = new Binary();
79+
80+
# 设置写指针
81+
$binary->setWriteCursor();
82+
# 获取写取指针
83+
$binary->getWriteCursor();
84+
85+
# 写一个字节
86+
$binary->writeByte();
87+
# 写多个字节
88+
$binary->writeBytes();
89+
# 写一个整数(长度编码)
90+
$binary->writeLenEncInt();
91+
# 写一个字符串(长度编码)
92+
$binary->writeLenEncString();
93+
# 写一个无符号整数(长度编码)
94+
$binary->writeUB();
95+
# 写一个字符串(以NULL结束)
96+
$binary->writeNullTerminated();
97+
```
98+
99+
### Packet 协议包
100+
101+
- `Packet`提供了`MySQL`协议基础的二进制包数据的解析与封装能力
102+
- `Packet`提供`PacketInterface`自定义实现
103+
- 默认13种`Packet`覆盖了常见`MySQL`交互动作
104+

src/Utils/Binary.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,11 +212,12 @@ public function unpack(): array
212212
/**
213213
* 将bytes转换为字符串形式
214214
*
215+
* @param bool $cache
215216
* @return string
216217
*/
217-
public function pack(): string
218+
public function pack(bool $cache = false): string
218219
{
219-
if ($this->string === null) {
220+
if ($cache and $this->string === null) {
220221
$this->string = self::BytesToString($this->bytes);
221222
}
222223
return $this->string;

0 commit comments

Comments
 (0)