18
18
19
19
class UsersBuilder
20
20
{
21
- public function buildUser(int $id, string $name, string $birthday): array
22
- {
23
- $result = [
24
- 'ID' => $id,
25
- 'Name' => $name,
26
- 'BirthDay' => new DateTimeImmutable($birthday),
27
- ];
28
-
29
- return $result;
30
- }
31
-
32
- public function fetchUsers(): array
33
- {
34
- // 仮実装なので仮データを返す
35
- $users = [];
36
- $users[] = $this->buildUser(1, 'Miku', '2007-08-31');
37
- $users[] = $this->buildUser(2, 'Rin', '2007-12-27');
38
- $users[] = $this->buildUser(3, 'Len', '2007-12-27');
39
- $users[] = $this->buildUser(4, 'Luka', '2009-01-30');
40
-
41
- return $users;
42
- }
21
+ public function buildUser(int $id, string $name, string $birthday): array
22
+ {
23
+ $result = [
24
+ 'ID' => $id,
25
+ 'Name' => $name,
26
+ 'BirthDay' => new DateTimeImmutable($birthday),
27
+ ];
28
+
29
+ return $result;
30
+ }
31
+
32
+ public function fetchUsers(): array
33
+ {
34
+ // 仮実装なので仮データを返す
35
+ $users = [];
36
+ $users[] = $this->buildUser(1, 'Miku', '2007-08-31');
37
+ $users[] = $this->buildUser(2, 'Rin', '2007-12-27');
38
+ $users[] = $this->buildUser(3, 'Len', '2007-12-27');
39
+ $users[] = $this->buildUser(4, 'Luka', '2009-01-30');
40
+
41
+ return $users;
42
+ }
43
43
}
44
44
```
45
45
@@ -69,24 +69,24 @@ PHPDocで配列に詳細な型を記述する方法は大きく分けて二つ
69
69
手始めに `buildUser()` メソッドに型をつけてみましょう。
70
70
71
71
```php
72
- public function buildUser(int $id, string $name, string $birthday): array
73
- {
74
- $result = [
75
- 'ID' => $id,
76
- 'Name' => $name,
77
- 'BirthDay' => new DateTimeImmutable($birthday),
78
- ];
79
- \PHPStan\dumpPhpDocType($result);
72
+ public function buildUser(int $id, string $name, string $birthday): array
73
+ {
74
+ $result = [
75
+ 'ID' => $id,
76
+ 'Name' => $name,
77
+ 'BirthDay' => new DateTimeImmutable($birthday),
78
+ ];
79
+ \PHPStan\dumpPhpDocType($result);
80
80
# Dumped type: array{ID: int, Name: string, BirthDay: DateTimeImmutable}
81
81
82
- return $result;
83
- }
82
+ return $result;
83
+ }
84
84
```
85
85
86
86
型が出力されました。これをコピペしてPHPDocに貼り付けます。
87
87
88
88
``` php
89
- /**
89
+ /**
90
90
* @return array{ID: int, Name: string, BirthDay: DateTimeImmutable}
91
91
*/
92
92
```
@@ -104,20 +104,20 @@ Dumped type: array{array{ID: int, Name: string, BirthDay: DateTimeImmutable}, ar
104
104
整形すると以下のようになります。
105
105
106
106
``` php
107
- /**
108
- * @return array{
109
- * 0: array{ID: int, Name: string, BirthDay: DateTimeImmutable},
110
- * 1: array{ID: int, Name: string, BirthDay: DateTimeImmutable},
111
- * 2: array{ID: int, Name: string, BirthDay: DateTimeImmutable},
112
- * 3: array{ID: int, Name: string, BirthDay: DateTimeImmutable},
113
- * }
114
- */
107
+ /**
108
+ * @return array{
109
+ * 0: array{ID: int, Name: string, BirthDay: DateTimeImmutable},
110
+ * 1: array{ID: int, Name: string, BirthDay: DateTimeImmutable},
111
+ * 2: array{ID: int, Name: string, BirthDay: DateTimeImmutable},
112
+ * 3: array{ID: int, Name: string, BirthDay: DateTimeImmutable},
113
+ * }
114
+ */
115
115
```
116
116
117
117
これをコピペしてまたPHPDocに貼り付ける… でもいいのですが、コードにはこういうことが書いてあります
118
118
119
119
``` php
120
- // 仮実装なので仮データを返す
120
+ // 仮実装なので仮データを返す
121
121
```
122
122
123
123
ということは、本実装では何個になるかというのは、あまり具体的な意味はなさそうです。
@@ -134,18 +134,18 @@ Dumped type: array{array{ID: int, Name: string, BirthDay: DateTimeImmutable}, ar
134
134
つまり、このように書けます。
135
135
136
136
``` php
137
- /**
138
- * @return array<array {ID: int, Name: string, BirthDay: DateTimeImmutable} >
139
- */
137
+ /**
138
+ * @return array<array {ID: int, Name: string, BirthDay: DateTimeImmutable} >
139
+ */
140
140
```
141
141
この型は読みやすいように改行しても構いません。
142
142
143
143
``` php
144
- /**
145
- * @return array<array {
144
+ /**
145
+ * @return array<array {
146
146
* ID: int,
147
147
* Name: string,
148
148
* BirthDay: DateTimeImmutable,
149
149
* } >
150
- */
150
+ */
151
151
```
0 commit comments