Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2e35b2e

Browse files
Featrue/normalizers (#7)
* add Normalizer * add Normalizer * add Normalizer * add Normalizer * fixed docs * fixed docs * fixed toArray Bug * added JsonSerializable
1 parent 081c277 commit 2e35b2e

File tree

19 files changed

+312
-42
lines changed

19 files changed

+312
-42
lines changed

‎docs/en/annotation/alisa-annotation.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,8 @@ $complexUser = ComplexUser::from([
128128
'user_tags' => ['developer', 'programmer']
129129
]);
130130

131-
// Convert to standard array
132-
$complexUserArray = $complexUser->toArray();
133-
// $complexUserArray toArray:
131+
var_dump($complexUserListFaker)
132+
// Content of $complexUserListFaker:
134133
// [
135134
// 'profile' => UserProfile Object ([
136135
// 'nickname' => 'job',

‎docs/en/faker/collection-faker.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ $userList = UserListFaker::faker();
2121

2222
$complexUserListFaker = UserListFaker::faker();
2323

24-
$complexUserListFakerArray = $complexUserListFaker->toArray();
25-
// Content of $complexUserListFakerArray:
24+
var_dump($complexUserListFaker)
25+
// Content of $complexUserListFaker:
2626
// [
2727
// 'profile' => [
2828
// [0] => UserProfile Object (

‎docs/en/mapper/array-mapper.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ $data1 = MultiArraySerialize::from(
4040
]
4141
);
4242

43-
$data1Array = $data1->toArray();
44-
// Content of $data1Array:
43+
var_dump($data1)
44+
// Content of $data1:
4545
// [
4646
// 'mixedTypeArray' => [
4747
// [0] => ArrayOne Object
@@ -72,8 +72,8 @@ $data2 = MultiArraySerialize::from(
7272
]
7373
);
7474

75-
$data2Array = $data2->toArray();
76-
// Content of $data2Array:
75+
var_dump($data2)
76+
// Content of $data2:
7777
// [
7878
// 'multiTypeArray' => [
7979
// ArrayOne Object (
@@ -97,8 +97,8 @@ $data3 = MultiArraySerialize::from(
9797
]
9898
);
9999

100-
$data3Array = $data3->toArray();
101-
// $data3Array toArray:
100+
var_dump($data3)
101+
// Content of $data3:
102102
// [
103103
// 'keyValueMixedArray' => [
104104
// 'user1' => ArrayOne Object (
@@ -121,8 +121,8 @@ $data4 = MultiArraySerialize::from(
121121
]
122122
);
123123

124-
$data4Array = $data4->toArray();
125-
// $data4Array toArray:
124+
var_dump($data4)
125+
// Content of $data4:
126126
// [
127127
// 'mixedTypeArray' => [
128128
// ['unknown' => 'data1'],

‎docs/en/mapper/union-mapper.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ $data2 = FlexibleData::from([
6060
echo $data2->userIdentifier; // Output User object
6161
echo $data2->complexIdentifier; // Output AdminUser object
6262

63-
$data2Array = $data2->toArray();
64-
// Content of $data2Array:
63+
var_dump($data2)
64+
// Content of $data2:
6565
// [
6666
// 'flexibleId' => 'ABC123',
6767
// 'userIdentifier' => User Object (
@@ -87,11 +87,11 @@ $data3 = FlexibleData::from([
8787
]
8888
]);
8989

90-
echo $data2->userIdentifier; // Output User object
91-
echo $data2->complexIdentifier; // Output AdminUser object
90+
echo $data3->userIdentifier; // Output User object
91+
echo $data3->complexIdentifier; // Output AdminUser object
9292

93-
$data3Array = $data3->toArray();
94-
// Content of $data3Array:
93+
var_dump($data3)
94+
// Content of $data3:
9595
// [
9696
// 'flexibleId' => 'USER001',
9797
// 'userIdentifier' => User Object (

‎docs/zh/annotation/alisa-annotation.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,7 @@ $complexUser = ComplexUser::from([
128128
'user_tags' => ['developer', 'programmer']
129129
]);
130130

131-
// 转换为标准数组
132-
$complexUserArray = $complexUser->toArray();
131+
var_dump($complexUser);
133132
// $complexUserArray 的内容:
134133
// [
135134
// 'profile' => UserProfile Object ([

‎docs/zh/faker/collection-faker.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ $userList = UserListFaker::faker();
2121

2222
$complexUserListFaker = UserListFaker::faker();
2323

24-
$complexUserListFakerArray = $complexUserListFaker->toArray();
25-
// $complexUserListFakerArray 的内容:
24+
var_dump($complexUserListFaker)
25+
// $complexUserListFaker 的内容:
2626
// [
2727
// 'profile' => [
2828
// [0] => UserProfile Object (

‎docs/zh/mapper/array-mapper.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ $data1 = MultiArraySerialize::from(
4040
]
4141
);
4242

43-
$data1Array = $data1->toArray();
44-
// $data1Array 的内容:
43+
var_dump($data1)
44+
// $data1 的内容:
4545
// [
4646
// 'mixedTypeArray' => [
4747
// [0] => ArrayOne Object
@@ -72,8 +72,8 @@ $data2 = MultiArraySerialize::from(
7272
]
7373
);
7474

75-
$data2Array = $data2->toArray();
76-
// $data2Array 的内容:
75+
var_dump($data2)
76+
// $data2 的内容:
7777
// [
7878
// 'multiTypeArray' => [
7979
// ArrayOne Object (
@@ -97,8 +97,8 @@ $data3 = MultiArraySerialize::from(
9797
]
9898
);
9999

100-
$data3Array = $data3->toArray();
101-
// $data3Array 的内容:
100+
var_dump($data3)
101+
// $data3 的内容:
102102
// [
103103
// 'keyValueMixedArray' => [
104104
// 'user1' => ArrayOne Object (
@@ -121,7 +121,7 @@ $data4 = MultiArraySerialize::from(
121121
]
122122
);
123123

124-
$data4Array = $data4->toArray();
124+
var_dump($data4)
125125
// $data4Array 的内容:
126126
// [
127127
// 'mixedTypeArray' => [

‎docs/zh/mapper/union-mapper.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ $data2 = FlexibleData::from([
6060
echo $data2->userIdentifier; // 输出 User 对象
6161
echo $data2->complexIdentifier; // 输出 User 对象
6262

63-
$data2Array = $data2->toArray();
63+
var_dump($data2)
6464
// $data2Array 的内容:
6565
// [
6666
// 'flexibleId' => 'ABC123',
@@ -87,10 +87,10 @@ $data3 = FlexibleData::from([
8787
]
8888
]);
8989

90-
echo $data2->userIdentifier; // 输出 User 对象
91-
echo $data2->complexIdentifier; // 输出 AdminUser 对象
90+
echo $data3->userIdentifier; // 输出 User 对象
91+
echo $data3->complexIdentifier; // 输出 AdminUser 对象
9292

93-
$data3Array = $data3->toArray();
93+
var_dump($data3)
9494
// $data3Array 的内容:
9595
// [
9696
// 'flexibleId' => 'USER001',
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace Astral\Serialize\Casts\Normalizer;
4+
5+
use Astral\Serialize\Contracts\Normalizer\NormalizerCastInterface;
6+
7+
class ArrayNormalizerCast implements NormalizerCastInterface
8+
{
9+
public function match(mixed $values): bool
10+
{
11+
return is_object($values) && method_exists($values, 'toArray');
12+
}
13+
14+
public function resolve(mixed $values): mixed
15+
{
16+
if($this->match($values)){
17+
return $values->toArray();
18+
}
19+
20+
return $values;
21+
}
22+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
namespace Astral\Serialize\Casts\Normalizer;
4+
5+
use Astral\Serialize\Contracts\Normalizer\NormalizerCastInterface;
6+
use JsonException;
7+
8+
class JsonNormalizerCast implements NormalizerCastInterface
9+
{
10+
public function match(mixed $values): bool
11+
{
12+
return is_string($values);
13+
}
14+
15+
public function resolve(mixed $values): array
16+
{
17+
if($this->match($values)){
18+
try {
19+
$decoded = json_decode($values, true, 512, JSON_THROW_ON_ERROR);
20+
return is_array($decoded) ? $decoded : $values;
21+
} catch (JsonException $e) {
22+
23+
}
24+
}
25+
26+
return $values;
27+
}
28+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /