Skip to content

Commit 56da217

Browse files
authored
Remove structured field interface (#19)
Remove StructuredField interface
1 parent 9a6f75d commit 56da217

16 files changed

+82
-112
lines changed

src/Dictionary.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@
2626
/**
2727
* @see https://www.rfc-editor.org/rfc/rfc9651.html#section-3.2
2828
*
29-
* @phpstan-import-type SfMemberInput from StructuredField
29+
* @phpstan-import-type SfMemberInput from StructuredFieldProvider
3030
*
3131
* @implements ArrayAccess<string, InnerList|Item>
3232
* @implements IteratorAggregate<int, array{0:string, 1:InnerList|Item}>
3333
*/
34-
final class Dictionary implements ArrayAccess, Countable, IteratorAggregate, StructuredField
34+
final class Dictionary implements ArrayAccess, Countable, IteratorAggregate
3535
{
3636
/** @var array<string, InnerList|Item> */
3737
private readonly array $members;
@@ -60,7 +60,7 @@ private static function filterMember(mixed $member): InnerList|Item
6060

6161
return match (true) {
6262
$member instanceof InnerList || $member instanceof Item => $member,
63-
$member instanceof StructuredField => throw new InvalidArgument('An instance of "'.$member::class.'" can not be a member of "'.self::class.'".'),
63+
$member instanceof OuterList || $member instanceof Dictionary || $member instanceof Parameters => throw new InvalidArgument('An instance of "'.$member::class.'" can not be a member of "'.self::class.'".'),
6464
is_iterable($member) => InnerList::new(...$member),
6565
default => Item::new($member),
6666
};
@@ -489,7 +489,7 @@ public function last(): array
489489
*/
490490
public function add(
491491
string $name,
492-
iterable|StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
492+
iterable|StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
493493
): self {
494494
if (null === $member) {
495495
return $this;
@@ -579,7 +579,7 @@ public function removeByNames(string ...$names): self
579579
*/
580580
public function append(
581581
string $name,
582-
iterable|StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
582+
iterable|StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
583583
): self {
584584
if (null === $member) {
585585
return $this;
@@ -602,7 +602,7 @@ public function append(
602602
*/
603603
public function prepend(
604604
string $name,
605-
iterable|StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
605+
iterable|StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
606606
): self {
607607
if (null === $member) {
608608
return $this;

src/Ietf.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@ public function supports(mixed $value): bool
4242
$value = $value->toStructuredField();
4343
}
4444

45-
if ($value instanceof StructuredField) {
45+
if ($value instanceof OuterList ||
46+
$value instanceof InnerList ||
47+
$value instanceof Dictionary ||
48+
$value instanceof Parameters ||
49+
$value instanceof Item
50+
) {
4651
try {
4752
$value->toHttpValue($this);
4853

src/InnerList.php

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@
2727
/**
2828
* @see https://www.rfc-editor.org/rfc/rfc9651.html#section-3.1.1
2929
*
30-
* @phpstan-import-type SfType from StructuredField
31-
* @phpstan-import-type SfItemInput from StructuredField
32-
* @phpstan-import-type SfInnerListPair from StructuredField
33-
* @phpstan-import-type SfParameterInput from StructuredField
30+
* @phpstan-import-type SfType from StructuredFieldProvider
31+
* @phpstan-import-type SfItemInput from StructuredFieldProvider
32+
* @phpstan-import-type SfInnerListPair from StructuredFieldProvider
33+
* @phpstan-import-type SfParameterInput from StructuredFieldProvider
3434
*
3535
* @implements ArrayAccess<int, Item>
3636
* @implements IteratorAggregate<int, Item>
3737
*/
38-
final class InnerList implements ArrayAccess, Countable, IteratorAggregate, StructuredField
38+
final class InnerList implements ArrayAccess, Countable, IteratorAggregate
3939
{
4040
use ParameterAccess;
4141

@@ -113,7 +113,7 @@ public static function fromPair(array $pair): self
113113
* Returns a new instance.
114114
*/
115115
public static function new(
116-
StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
116+
StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
117117
): self {
118118
return new self($members, Parameters::new());
119119
}
@@ -132,7 +132,7 @@ public function toHttpValue(?Ietf $rfc = null): string
132132
{
133133
$rfc ??= Ietf::Rfc9651;
134134

135-
return '('.implode(' ', array_map(fn (StructuredField $value): string => $value->toHttpValue($rfc), $this->members)).')'.$this->parameters->toHttpValue($rfc);
135+
return '('.implode(' ', array_map(fn (Item $value): string => $value->toHttpValue($rfc), $this->members)).')'.$this->parameters->toHttpValue($rfc);
136136
}
137137

138138
public function toRfc9651(): string
@@ -244,10 +244,7 @@ public function first(): ?Item
244244
return $this->members[0] ?? null;
245245
}
246246

247-
/**
248-
* @return ?Item
249-
*/
250-
public function last(): ?StructuredField
247+
public function last(): ?Item
251248
{
252249
return $this->members[$this->filterIndex(-1)] ?? null;
253250
}
@@ -261,7 +258,7 @@ public function withParameters(Parameters $parameters): static
261258
* Inserts members at the beginning of the list.
262259
*/
263260
public function unshift(
264-
StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
261+
StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
265262
): self {
266263
$membersToAdd = array_reduce(
267264
$members,
@@ -285,7 +282,7 @@ function (array $carry, $member) {
285282
* Inserts members at the end of the list.
286283
*/
287284
public function push(
288-
StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
285+
StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
289286
): self {
290287
$membersToAdd = array_reduce(
291288
$members,
@@ -312,7 +309,7 @@ function (array $carry, $member) {
312309
*/
313310
public function insert(
314311
int $index,
315-
StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
312+
StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
316313
): self {
317314
$offset = $this->filterIndex($index) ?? throw InvalidOffset::dueToIndexNotFound($index);
318315

@@ -330,7 +327,7 @@ public function insert(
330327

331328
public function replace(
332329
int $index,
333-
StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool $member
330+
StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool $member
334331
): self {
335332
$offset = $this->filterIndex($index) ?? throw InvalidOffset::dueToIndexNotFound($index);
336333
$member = self::filterMember($member);

src/Item.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
/**
1717
* @see https://www.rfc-editor.org/rfc/rfc9651.html#section-3.3
1818
*
19-
* @phpstan-import-type SfType from StructuredField
20-
* @phpstan-import-type SfItemInput from StructuredField
21-
* @phpstan-import-type SfItemPair from StructuredField
22-
* @phpstan-import-type SfTypeInput from StructuredField
19+
* @phpstan-import-type SfType from StructuredFieldProvider
20+
* @phpstan-import-type SfItemInput from StructuredFieldProvider
21+
* @phpstan-import-type SfItemPair from StructuredFieldProvider
22+
* @phpstan-import-type SfTypeInput from StructuredFieldProvider
2323
*/
24-
final class Item implements StructuredField
24+
final class Item
2525
{
2626
use ParameterAccess;
2727

src/OuterList.php

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@
2929
/**
3030
* @see https://www.rfc-editor.org/rfc/rfc9651.html#name-lists
3131
*
32-
* @phpstan-import-type SfMemberInput from StructuredField
33-
* @phpstan-import-type SfInnerListPair from StructuredField
34-
* @phpstan-import-type SfItemPair from StructuredField
32+
* @phpstan-import-type SfMemberInput from StructuredFieldProvider
33+
* @phpstan-import-type SfInnerListPair from StructuredFieldProvider
34+
* @phpstan-import-type SfItemPair from StructuredFieldProvider
3535
*
3636
* @implements ArrayAccess<int, InnerList|Item>
3737
* @implements IteratorAggregate<int, InnerList|Item>
3838
*/
39-
final class OuterList implements ArrayAccess, Countable, IteratorAggregate, StructuredField
39+
final class OuterList implements ArrayAccess, Countable, IteratorAggregate
4040
{
4141
/** @var list<InnerList|Item> */
4242
private readonly array $members;
@@ -45,7 +45,7 @@ final class OuterList implements ArrayAccess, Countable, IteratorAggregate, Stru
4545
* @param InnerList|Item|SfMemberInput ...$members
4646
*/
4747
private function __construct(
48-
iterable|StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
48+
iterable|StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
4949
) {
5050
$this->members = array_map($this->filterMember(...), array_values([...$members]));
5151
}
@@ -61,7 +61,7 @@ private function filterMember(mixed $member): InnerList|Item
6161

6262
return match (true) {
6363
$member instanceof InnerList || $member instanceof Item => $member,
64-
$member instanceof StructuredField => throw new InvalidArgument('An instance of "'.$member::class.'" can not be a member of "'.self::class.'".'),
64+
$member instanceof OuterList || $member instanceof Parameters || $member instanceof Dictionary => throw new InvalidArgument('An instance of "'.$member::class.'" can not be a member of "'.self::class.'".'),
6565
is_iterable($member) => InnerList::new(...$member),
6666
default => Item::new($member),
6767
};
@@ -142,7 +142,7 @@ public static function fromPairs(StructuredFieldProvider|iterable $pairs): self
142142
/**
143143
* @param InnerList|Item|SfMemberInput ...$members
144144
*/
145-
public static function new(iterable|StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members): self
145+
public static function new(iterable|StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members): self
146146
{
147147
return new self(...$members);
148148
}
@@ -161,7 +161,7 @@ public function toHttpValue(?Ietf $rfc = null): string
161161
{
162162
$rfc ??= Ietf::Rfc9651;
163163

164-
return implode(', ', array_map(fn (StructuredField $member): string => $member->toHttpValue($rfc), $this->members));
164+
return implode(', ', array_map(fn (Item|InnerList $member): string => $member->toHttpValue($rfc), $this->members));
165165
}
166166

167167
public function toRfc9651(): string
@@ -276,7 +276,7 @@ public function last(): InnerList|Item|null
276276
* @param StructuredFieldProvider|InnerList|Item|SfMemberInput ...$members
277277
*/
278278
public function unshift(
279-
StructuredFieldProvider|StructuredField|iterable|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
279+
StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|iterable|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
280280
): self {
281281
$membersToAdd = array_reduce(
282282
$members,
@@ -302,7 +302,7 @@ function (array $carry, $member) {
302302
* @param InnerList|Item|SfMemberInput ...$members
303303
*/
304304
public function push(
305-
iterable|StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
305+
iterable|StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
306306
): self {
307307
$membersToAdd = array_reduce(
308308
$members,
@@ -331,7 +331,7 @@ function (array $carry, $member) {
331331
*/
332332
public function insert(
333333
int $index,
334-
iterable|StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
334+
iterable|StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool ...$members
335335
): self {
336336
$offset = $this->filterIndex($index) ?? throw InvalidOffset::dueToIndexNotFound($index);
337337

@@ -352,7 +352,7 @@ public function insert(
352352
*/
353353
public function replace(
354354
int $index,
355-
iterable|StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool $member
355+
iterable|StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool $member
356356
): self {
357357
$offset = $this->filterIndex($index) ?? throw InvalidOffset::dueToIndexNotFound($index);
358358
$member = self::filterMember($member);

src/ParameterAccess.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
* Common manipulation methods used when interacting with an object
1313
* with a Parameters instance attached to it.
1414
*
15-
* @phpstan-import-type SfType from StructuredField
16-
* @phpstan-import-type SfItemInput from StructuredField
15+
* @phpstan-import-type SfType from StructuredFieldProvider
16+
* @phpstan-import-type SfItemInput from StructuredFieldProvider
1717
*/
1818
trait ParameterAccess
1919
{
@@ -76,13 +76,13 @@ abstract public function withParameters(Parameters $parameters): static;
7676
* This method MUST retain the state of the current instance, and return
7777
* an instance that contains the specified parameter change.
7878
*
79-
* @param StructuredFieldProvider|StructuredField|SfType|null $member
79+
* @param StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|SfType|null $member
8080
*
8181
* @throws SyntaxError If the string key is not a valid
8282
*/
8383
public function addParameter(
8484
string $name,
85-
StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
85+
StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
8686
): static {
8787
return $this->withParameters($this->parameters()->add($name, $member));
8888
}
@@ -93,13 +93,13 @@ public function addParameter(
9393
* This method MUST retain the state of the current instance, and return
9494
* an instance that contains the specified parameter change.
9595
*
96-
* @param StructuredFieldProvider|StructuredField|SfType|null $member
96+
* @param StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|SfType|null $member
9797
*
9898
* @throws SyntaxError If the string key is not a valid
9999
*/
100100
public function prependParameter(
101101
string $name,
102-
StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
102+
StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
103103
): static {
104104
return $this->withParameters($this->parameters()->prepend($name, $member));
105105
}
@@ -110,13 +110,13 @@ public function prependParameter(
110110
* This method MUST retain the state of the current instance, and return
111111
* an instance that contains the specified parameter change.
112112
*
113-
* @param StructuredFieldProvider|StructuredField|SfType|null $member
113+
* @param StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|SfType|null $member
114114
*
115115
* @throws SyntaxError If the string key is not a valid
116116
*/
117117
public function appendParameter(
118118
string $name,
119-
StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
119+
StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
120120
): static {
121121
return $this->withParameters($this->parameters()->append($name, $member));
122122
}

src/Parameters.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@
2626
/**
2727
* @see https://www.rfc-editor.org/rfc/rfc9651.html#section-3.1.2
2828
*
29-
* @phpstan-import-type SfItemInput from StructuredField
30-
* @phpstan-import-type SfType from StructuredField
29+
* @phpstan-import-type SfItemInput from StructuredFieldProvider
30+
* @phpstan-import-type SfType from StructuredFieldProvider
3131
*
3232
* @implements ArrayAccess<string, InnerList|Item>
3333
* @implements IteratorAggregate<int, array{0:string, 1:Item}>
3434
*/
35-
final class Parameters implements ArrayAccess, Countable, IteratorAggregate, StructuredField
35+
final class Parameters implements ArrayAccess, Countable, IteratorAggregate
3636
{
3737
/** @var array<string, Item> */
3838
private readonly array $members;
@@ -471,11 +471,11 @@ public function valueByIndex(int $index, ?callable $validate = null, bool|string
471471
}
472472

473473
/**
474-
* @param StructuredFieldProvider|StructuredField|SfType|null $member
474+
* @param StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|SfType|null $member
475475
*/
476476
public function add(
477477
string $name,
478-
StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
478+
StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
479479
): self {
480480
if (null === $member) {
481481
return $this;
@@ -537,11 +537,11 @@ public function removeByKeys(string ...$names): self
537537
}
538538

539539
/**
540-
* @param StructuredFieldProvider|StructuredField|SfType|null $member
540+
* @param StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|SfType|null $member
541541
*/
542542
public function append(
543543
string $name,
544-
StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
544+
StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
545545
): self {
546546
if (null === $member) {
547547
return $this;
@@ -554,11 +554,11 @@ public function append(
554554
}
555555

556556
/**
557-
* @param StructuredFieldProvider|StructuredField|SfType|null $member
557+
* @param StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|SfType|null $member
558558
*/
559559
public function prepend(
560560
string $name,
561-
StructuredFieldProvider|StructuredField|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
561+
StructuredFieldProvider|OuterList|Dictionary|InnerList|Parameters|Item|Token|ByteSequence|DisplayString|DateTimeInterface|string|int|float|bool|null $member
562562
): self {
563563
if (null === $member) {
564564
return $this;

src/Parser.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
* @internal Do not use directly this class as it's behaviour and return type
3434
* MAY change significantly even during a major release cycle.
3535
*
36-
* @phpstan-import-type SfType from StructuredField
36+
* @phpstan-import-type SfType from StructuredFieldProvider
3737
*/
3838
final class Parser
3939
{

0 commit comments

Comments
 (0)