Skip to content

Commit 4d1399b

Browse files
committed
Improve methods return type and docblocks
1 parent 680bf6e commit 4d1399b

File tree

4 files changed

+81
-82
lines changed

4 files changed

+81
-82
lines changed

src/Dictionary.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,6 @@ public function hasMembers(): bool
142142
return [] !== $this->members;
143143
}
144144

145-
/**
146-
* @return Iterator<string, Value|(MemberList<int, Value>&ParameterAccess)>
147-
*/
148145
public function getIterator(): Iterator
149146
{
150147
yield from $this->members;

src/InnerList.php

Lines changed: 41 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,6 @@ public function keys(): array
151151
return array_keys($this->members);
152152
}
153153

154-
/**
155-
* @return Iterator<int, Value>
156-
*/
157154
public function getIterator(): Iterator
158155
{
159156
yield from $this->members;
@@ -187,7 +184,7 @@ private function filterIndex(string|int $index): int|null
187184
};
188185
}
189186

190-
public function get(string|int $key): Value
187+
public function get(string|int $key): StructuredField
191188
{
192189
$index = $this->filterIndex($key);
193190
if (null === $index) {
@@ -197,6 +194,32 @@ public function get(string|int $key): Value
197194
return $this->members[$index];
198195
}
199196

197+
/**
198+
* @param int $offset
199+
*/
200+
public function offsetExists(mixed $offset): bool
201+
{
202+
return $this->has($offset);
203+
}
204+
205+
/**
206+
* @param int $offset
207+
*/
208+
public function offsetGet(mixed $offset): mixed
209+
{
210+
return $this->get($offset);
211+
}
212+
213+
public function offsetUnset(mixed $offset): void
214+
{
215+
throw new ForbiddenOperation(self::class.' instance can not be updated using '.ArrayAccess::class.' methods.');
216+
}
217+
218+
public function offsetSet(mixed $offset, mixed $value): void
219+
{
220+
throw new ForbiddenOperation(self::class.' instance can not be updated using '.ArrayAccess::class.' methods.');
221+
}
222+
200223
/**
201224
* Inserts members at the beginning of the list.
202225
*/
@@ -206,19 +229,27 @@ public function unshift(StructuredField|Token|ByteSequence|DateTimeInterface|Str
206229
return $this;
207230
}
208231

209-
return new self($this->parameters, [...array_map(self::filterMember(...), array_values($members)), ...$this->members]);
232+
return $this->newInstance([...array_map(self::filterMember(...), array_values($members)), ...$this->members]);
210233
}
211234

212235
/**
213-
* Insert members at the end of the list.
236+
* @param iterable<Value|DataType> $members
237+
*/
238+
private function newInstance(iterable $members): self
239+
{
240+
return new self($this->parameters, $members);
241+
}
242+
243+
/**
244+
* Inserts members at the end of the list.
214245
*/
215246
public function push(StructuredField|Token|ByteSequence|DateTimeInterface|Stringable|string|int|float|bool ...$members): static
216247
{
217248
if ([] === $members) {
218249
return $this;
219250
}
220251

221-
return new self($this->parameters, [...$this->members, ...array_map(self::filterMember(...), array_values($members))]);
252+
return $this->newInstance([...$this->members, ...array_map(self::filterMember(...), array_values($members))]);
222253
}
223254

224255
/**
@@ -238,7 +269,7 @@ public function insert(int $key, StructuredField|Token|ByteSequence|DateTimeInte
238269
default => (function (array $newMembers) use ($offset, $members) {
239270
array_splice($newMembers, $offset, 0, array_map(self::filterMember(...), $members));
240271

241-
return new self($this->parameters, $newMembers);
272+
return $this->newInstance($newMembers);
242273
})($this->members),
243274
};
244275
}
@@ -252,7 +283,7 @@ public function replace(int $key, StructuredField|Token|ByteSequence|DateTimeInt
252283
$members = $this->members;
253284
$members[$offset] = self::filterMember($member);
254285

255-
return new self($this->parameters, $members);
286+
return $this->newInstance($members);
256287
}
257288

258289
/**
@@ -277,32 +308,6 @@ public function remove(string|int ...$keys): static
277308
unset($members[$offset]);
278309
}
279310

280-
return new self($this->parameters, $members);
281-
}
282-
283-
/**
284-
* @param int $offset
285-
*/
286-
public function offsetExists(mixed $offset): bool
287-
{
288-
return $this->has($offset);
289-
}
290-
291-
/**
292-
* @param int $offset
293-
*/
294-
public function offsetGet(mixed $offset): Value
295-
{
296-
return $this->get($offset);
297-
}
298-
299-
public function offsetUnset(mixed $offset): void
300-
{
301-
throw new ForbiddenOperation(self::class.' instance can not be updated using '.ArrayAccess::class.' methods.');
302-
}
303-
304-
public function offsetSet(mixed $offset, mixed $value): void
305-
{
306-
throw new ForbiddenOperation(self::class.' instance can not be updated using '.ArrayAccess::class.' methods.');
311+
return $this->newInstance($members);
307312
}
308313
}

src/OuterList.php

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,6 @@ public function keys(): array
112112
return array_keys($this->members);
113113
}
114114

115-
/**
116-
* @return Iterator<int, Value|(MemberList<int, Value>&ParameterAccess)>
117-
*/
118115
public function getIterator(): Iterator
119116
{
120117
yield from $this->members;
@@ -148,10 +145,7 @@ private function filterIndex(string|int $index): int|null
148145
};
149146
}
150147

151-
/**
152-
* @return (MemberList<int, Value>&ParameterAccess)|Value
153-
*/
154-
public function get(string|int $key): MemberList|Value
148+
public function get(string|int $key): StructuredField
155149
{
156150
$index = $this->filterIndex($key);
157151
if (null === $index) {
@@ -161,6 +155,32 @@ public function get(string|int $key): MemberList|Value
161155
return $this->members[$index];
162156
}
163157

158+
/**
159+
* @param int $offset
160+
*/
161+
public function offsetExists(mixed $offset): bool
162+
{
163+
return $this->has($offset);
164+
}
165+
166+
/**
167+
* @param int $offset
168+
*/
169+
public function offsetGet(mixed $offset): mixed
170+
{
171+
return $this->get($offset);
172+
}
173+
174+
public function offsetUnset(mixed $offset): void
175+
{
176+
throw new ForbiddenOperation(self::class.' instance can not be updated using '.ArrayAccess::class.' methods.');
177+
}
178+
179+
public function offsetSet(mixed $offset, mixed $value): void
180+
{
181+
throw new ForbiddenOperation(self::class.' instance can not be updated using '.ArrayAccess::class.' methods.');
182+
}
183+
164184
/**
165185
* Inserts members at the beginning of the list.
166186
*/
@@ -170,7 +190,15 @@ public function unshift(StructuredField|Token|ByteSequence|DateTimeInterface|Str
170190
return $this;
171191
}
172192

173-
return new self(...[...array_map(self::filterMember(...), array_values($members)), ...$this->members]);
193+
return $this->newInstance([...array_map(self::filterMember(...), array_values($members)), ...$this->members]);
194+
}
195+
196+
/**
197+
* @param iterable<int, Value|(MemberList<int, Value>&ParameterAccess)> $members
198+
*/
199+
private function newInstance(iterable $members): self
200+
{
201+
return new self(...$members);
174202
}
175203

176204
/**
@@ -182,7 +210,7 @@ public function push(StructuredField|Token|ByteSequence|DateTimeInterface|String
182210
return $this;
183211
}
184212

185-
return new self(...[...$this->members, ...array_map(self::filterMember(...), array_values($members))]);
213+
return $this->newInstance([...$this->members, ...array_map(self::filterMember(...), array_values($members))]);
186214
}
187215

188216
/**
@@ -202,7 +230,7 @@ public function insert(int $key, StructuredField|Token|ByteSequence|DateTimeInte
202230
default => (function (array $newMembers) use ($offset, $members) {
203231
array_splice($newMembers, $offset, 0, array_map(self::filterMember(...), $members));
204232

205-
return new self(...$newMembers);
233+
return $this->newInstance($newMembers);
206234
})($this->members),
207235
};
208236
}
@@ -216,7 +244,7 @@ public function replace(int $key, StructuredField|Token|ByteSequence|DateTimeInt
216244
$members = $this->members;
217245
$members[$offset] = self::filterMember($member);
218246

219-
return new self(...$members);
247+
return $this->newInstance($members);
220248
}
221249

222250
/**
@@ -241,34 +269,6 @@ public function remove(string|int ...$keys): static
241269
unset($members[$offset]);
242270
}
243271

244-
return new self(...$members);
245-
}
246-
247-
/**
248-
* @param int $offset
249-
*/
250-
public function offsetExists(mixed $offset): bool
251-
{
252-
return $this->has($offset);
253-
}
254-
255-
/**
256-
* @param int $offset
257-
*
258-
* @return Value|(MemberList<int, Value>&ParameterAccess)
259-
*/
260-
public function offsetGet(mixed $offset): mixed
261-
{
262-
return $this->get($offset);
263-
}
264-
265-
public function offsetUnset(mixed $offset): void
266-
{
267-
throw new ForbiddenOperation(self::class.' instance can not be updated using '.ArrayAccess::class.' methods.');
268-
}
269-
270-
public function offsetSet(mixed $offset, mixed $value): void
271-
{
272-
throw new ForbiddenOperation(self::class.' instance can not be updated using '.ArrayAccess::class.' methods.');
272+
return $this->newInstance($members);
273273
}
274274
}

src/Parameters.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,6 @@ public function hasMembers(): bool
136136
return [] !== $this->members;
137137
}
138138

139-
/**
140-
* @return Iterator<array-key, Value>
141-
*/
142139
public function getIterator(): Iterator
143140
{
144141
yield from $this->members;

0 commit comments

Comments
 (0)