1- ##### Mapper映射
1+ ### Mapper映射
2+
3+ ### 属性映射
24
35``` php
46use Astral\Serialize\Attributes\InputName;
@@ -46,7 +48,7 @@ $userArray = $user->toArray();
4648// ]
4749```
4850
49- ##### 全局类映射
51+ ### 全局类映射
5052
5153``` php
5254use Astral\Serialize\Attributes\InputName;
@@ -88,33 +90,7 @@ $userArray = $user->toArray();
8890// ]
8991```
9092
91- ###### 属性映射大于类级映射
92-
93- ``` php
94-
95- #[InputName(SnakeCaseMapper::class)]
96- class PartialOverrideUser extends Serialize {
97- #[InputName(PascalCaseMapper::class)]
98- public string $userName; // 优先使用帕斯卡命名映射
99-
100- public string $userEmail; // 继续使用类级别的全局映射
101- }
102-
103- $partialUser = PartialOverrideUser::from([
104- 'User_name' => '张三', // 使用蛇形映射
105- 'UserName' => '李四', // 使用帕斯卡映射
106- 'user_email' => 'user@example.com' // 使用蛇形映射
107- ]);
108-
109- $partialUser->toArray();
110- // $partialUser 的内容:
111- // [
112- // 'userName' => '李四',
113- // 'userEmail' => 'user@example.com',
114- // ]
115- ```
116-
117- ###### 全局类映射的分组使用
93+ ### 全局类映射的分组使用
11894
11995需要搭配` Groups ` 注解一起使用
12096
@@ -180,7 +156,7 @@ $complexUser = $complexUser->toArray();
180156// 'userEmail' => 张三,
181157// ]
182158```
183- #### 自定义映射器
159+ ### 自定义映射器
184160
185161``` php
186162// 自定义映射器 需要继承NameMapper 并实现 resolve
@@ -195,4 +171,30 @@ class AdvancedUser extends Serialize {
195171 #[InputName(CustomMapper::class)]
196172 public string $name;
197173}
174+ ```
175+
176+ ### Tips:属性映射优先于类级映射
177+
178+ ``` php
179+
180+ #[InputName(SnakeCaseMapper::class)]
181+ class PartialOverrideUser extends Serialize {
182+ #[InputName(PascalCaseMapper::class)]
183+ public string $userName; // 优先使用帕斯卡命名映射
184+
185+ public string $userEmail; // 继续使用类级别的全局映射
186+ }
187+
188+ $partialUser = PartialOverrideUser::from([
189+ 'User_name' => '张三', // 使用蛇形映射
190+ 'UserName' => '李四', // 使用帕斯卡映射
191+ 'user_email' => 'user@example.com' // 使用蛇形映射
192+ ]);
193+
194+ $partialUser->toArray();
195+ // $partialUser 的内容:
196+ // [
197+ // 'userName' => '李四',
198+ // 'userEmail' => 'user@example.com',
199+ // ]
198200```
0 commit comments