Skip to content

Commit 86de98c

Browse files
committed
gitbook test
1 parent 9d9d261 commit 86de98c

File tree

10 files changed

+1024
-1
lines changed

10 files changed

+1024
-1
lines changed

docs/zh/SUMMARY.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,19 @@
1111
* [Null值转换](mapper/null-mapper.md)
1212
* [枚举转换](mapper/enum-mapper.md)
1313
* [数组对象转换](mapper/array-mapper.md)
14-
* [联合类型转换](mapper/union-mapper.md)
14+
* [联合类型转换](mapper/union-mapper.md)
15+
16+
## 注解类使用
17+
18+
* [属性分组](annotation/group-annotation.md)
19+
* [输入/输入出名称映射](annotation/alisa-annotation.md)
20+
* [Mapper映射](annotation/mapper-annotation.md)
21+
* [输入/输出忽略](annotation/ignore-annotation.md)
22+
* [时间格式映射](annotation/date-annotation.md)
23+
24+
## 参数快速Faker
25+
26+
* [简单属性Faker](faker/value-faker.md)
27+
* [集合Faker](faker/collection-faker.md)
28+
* [嵌套Faker](faker/nested-faker.md)
29+
* [方法Faker](faker/method-faker.md)
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
#### 名称映射
2+
3+
##### 基础使用
4+
5+
```php
6+
use Astral\Serialize\Attributes\InputName;
7+
use Astral\Serialize\Attributes\OutputName;
8+
use Astral\Serialize\Serialize;
9+
10+
class User extends Serialize {
11+
// 输入时使用不同的属性名
12+
#[InputName('user_name')]
13+
public string $name;
14+
15+
// 输出时使用不同的属性名
16+
#[OutputName('user_id')]
17+
public int $id;
18+
19+
// 同时支持输入和输出不同名称
20+
#[InputName('register_time')]
21+
#[OutputName('registeredAt')]
22+
public DateTime $createdAt;
23+
}
24+
25+
// 使用不同名称的输入数据
26+
$user = User::from([
27+
'user_name' => '张三', // 映射到 $name
28+
'id' => 123, // 保持不变
29+
'register_time' => '2023-01-01 10:00:00' // 映射到 $createdAt
30+
]);
31+
32+
// 输出数据
33+
$userArray = $user->toArray();
34+
// $userArray 的内容:
35+
// [
36+
// 'name' => '张三',
37+
// 'user_id' => 123,
38+
// 'registeredAt' => '2023-01-01 10:00:00'
39+
// ]
40+
```
41+
42+
##### 多输入/输出名称处理
43+
44+
```php
45+
use Astral\Serialize\Attributes\InputName;
46+
use Astral\Serialize\Attributes\OutputName;
47+
use Astral\Serialize\Serialize;
48+
49+
class MultiOutputUser extends Serialize {
50+
// 多个输出名称
51+
#[OutputName('user_id')]
52+
#[OutputName('id')]
53+
#[OutputName('userId')]
54+
public int $id;
55+
56+
// 多个输出名称 按照声明顺序取地一个匹配的name
57+
#[InputName('user_name')]
58+
#[InputName('other_name')]
59+
#[InputName('userName')]
60+
public int $name;
61+
62+
}
63+
64+
// 场景1:使用第一个匹配的输入名称
65+
$user1 = MultiInputUser::from([
66+
'user_name' => '张三' // 使用 'user_name'
67+
]);
68+
echo $user1->name; // 输出 '张三'
69+
70+
// 场景2:使用第二个匹配的输入名称
71+
$user2 = MultiInputUser::from([
72+
'other_name' => '李四' // 使用 'other_name'
73+
]);
74+
echo $user2->name; // 输出 '李四'
75+
76+
// 场景3:使用最后的输入名称
77+
$user3 = MultiInputUser::from([
78+
'userName' => '王五' // 使用 'userName'
79+
]);
80+
echo $user3->name; // 输出 '王五'
81+
82+
// 场景4:传入多个的时候 按照声明顺序取地一个匹配的name
83+
$user4 = MultiInputUser::from([
84+
'userName' => '王五',
85+
'other_name' => '李四',
86+
'user_name' => '张三',
87+
]);
88+
echo $user4->name; // 输出 '张三'
89+
90+
// 创建用户对象
91+
$user = MultiOutputUser::from([
92+
'id' => 123,
93+
'name' => '张三'
94+
]);
95+
96+
// 转换为数组
97+
// tips: 因为id 有多个outputname 所以输出了 ['user_id','id','userId']
98+
$userArray = $user->toArray();
99+
// $userArray 的内容:
100+
// [
101+
// 'user_id' => 123,
102+
// 'id' => 123,
103+
// 'userId' => 123,
104+
// ]
105+
```
106+
107+
##### 复杂映射场景
108+
109+
```php
110+
use Astral\Serialize\Serialize;
111+
112+
class ComplexUser extends Serialize {
113+
// 嵌套对象的名称映射
114+
#[InputName('user_profile')]
115+
public UserProfile $profile;
116+
117+
// 数组元素的名称映射
118+
#[InputName('user_tags')]
119+
public array $tags;
120+
}
121+
122+
// 处理复杂的输入结构
123+
$complexUser = ComplexUser::from([
124+
'user_profile' => [
125+
'nickname' => '小明',
126+
'age' => 25
127+
],
128+
'user_tags' => ['developer', 'programmer']
129+
]);
130+
131+
// 转换为标准数组
132+
$complexUserArray = $complexUser->toArray();
133+
// $complexUserArray 的内容:
134+
// [
135+
// 'profile' => UserProfile Object ([
136+
// 'nickname' => '小明',
137+
// 'age' => 25
138+
// ]),
139+
// 'tags' => ['developer', 'programmer']
140+
// ]
141+
```

docs/zh/annotation/date-annotation.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
#### 时间转换
2+
3+
1. 格式灵活性
4+
支持多种输入和输出时间格式
5+
可以轻松处理不同地区的日期表示
6+
2. 时区处理
7+
支持在不同时区间转换
8+
自动处理时间的时区偏移
9+
3. 类型安全
10+
自动将字符串转换为 DateTime 对象
11+
保证类型的一致性和正确性
12+
13+
##### 基础使用
14+
15+
```php
16+
use Astral\Serialize\Attributes\Input\InputDateFormat;
17+
use Astral\Serialize\Attributes\Output\OutputDateFormat;
18+
use Astral\Serialize\Serialize;
19+
20+
class TimeExample extends Serialize {
21+
22+
// 输入时间格式转换
23+
#[InputDateFormat('Y-m-d')]
24+
public DateTime $dateTime;
25+
26+
// 输入时间格式转换
27+
#[InputDateFormat('Y-m-d')]
28+
public string $dateDateString;
29+
30+
// 输出时间格式转换
31+
#[OutputDateFormat('Y/m/d H:i')]
32+
public DateTime|string $processedAt;
33+
34+
35+
// 支持多种时间格式
36+
#[InputDateFormat('Y-m-d H:i:s')]
37+
#[OutputDateFormat('Y-m-d')]
38+
public string $createdAt;
39+
}
40+
41+
// 创建订单对象
42+
$order = TimeExample::from([
43+
'dateTime' => new DateTime('2023-08-11'), // 输入格式:Y-m-d
44+
'dateDateString' => '2023-08-15', // 输入格式:Y-m-d
45+
'processedAt' => '2023-08-16 14:30', // 输入默认格式 也支持DateTime对象
46+
'createdAt' => '2023-08-16 14:45:30' // 输入格式:Y-m-d H:i:s
47+
]);
48+
49+
// 转换为数组
50+
$orderArray = $order->toArray();
51+
// $orderArray 的内容:
52+
// [
53+
// 'dateTime' => '2023-08-11',
54+
// ’dateDateString' => '2023-08-15',
55+
// 'processedAt' => '2023/08/16 14:30',
56+
// 'createdAt' => '2023-08-16'
57+
// ]
58+
```
59+
60+
##### 带时区的时间转换
61+
62+
```php
63+
64+
use Astral\Serialize\Attributes\Input\InputDateFormat;
65+
use Astral\Serialize\Attributes\Output\OutputDateFormat;
66+
use Astral\Serialize\Serialize;
67+
68+
class AdvancedTimeUser extends Serialize {
69+
// 支持时区转换
70+
#[InputDateFormat('Y-m-d H:i:s', timezone: 'UTC')]
71+
#[OutputDateFormat('Y-m-d H:i:s', timezone: 'Asia/Shanghai')]
72+
public DateTime $registeredAt;
73+
74+
// 支持不同地区的时间格式
75+
#[InputDateFormat('d/m/Y')] // 英国格式
76+
#[OutputDateFormat('Y-m-d')] // 标准格式
77+
public DateTime $birthDate;
78+
}
79+
80+
// 使用高级时间转换
81+
$advancedUser = AdvancedTimeUser::from([
82+
'registeredAt' => '2023-08-16 10:00:00', // UTC 时间
83+
'birthDate' => '15/08/1990' // 英国日期格式
84+
]);
85+
86+
$advancedUserArray = $advancedUser->toArray();
87+
// $advancedUserArray 的内容:
88+
// [
89+
// 'registeredAt' => '2023-08-16 18:00:00', // 转换为上海时区
90+
// 'birthDate' => '1990-08-15'
91+
// ]
92+
```

0 commit comments

Comments
 (0)