Skip to content

Commit e5bd272

Browse files
committed
Simplify interfaces
1 parent 46933a4 commit e5bd272

15 files changed

+48
-78
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ All Notable changes to `bakame/http-strucured-fields` will be documented in this
3434
- **[BC Break]** `ByteSequence` no longer implements the `StructuredField` interface.
3535
- **[BC Break]** `ByteSequence::toHttpValue` is removed; use the `Item` class to serialize a `ByteSequence`.
3636
- **[BC Break]** `::sanitize` method is removed use `Parameters::clear` method instead if needed.
37+
- **[BC Break]** `isEmpty` method is removed use `hasMembers` method instead.
3738

3839
## [0.5.0] - 2022-05-13
3940

docs/containers.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ $parameters = StructuredFields\Parameters::fromAssociative(['a' => 1, 'b' => 2,
77
count($parameters); // returns 3
88
$parameters->hasMembers(); // returns true
99
$parameters->toHttpValue(); // returns ';a=1;b=2;c="hello world"'
10-
$parameters->clear()->hasNoMembers(); // returns true
10+
$parameters->clear()->hasMembers(); // returns false
1111
```
1212

1313
The package exposes [ordered maps](ordered-maps.md)
@@ -27,9 +27,9 @@ At any given time it is possible with each of these objects to:
2727
- iterate over its members using the `IteratorAggregate` interface;
2828
- know the number of members it contains via the `Countable` interface;
2929
- access container members via the `ArrayAccess` interface;
30-
- tell whether the container contains or not members with the `hasNoMembers` and/or `hasMembers` methods from the `MemberContainer` interface;
31-
- clear its content using the `clear` method from the `MemberContainer` interface;
32-
- unwrap Item value using the `values`, `value` methods from the `MemberContainer` interface;
30+
- tell whether the container contains or not members with the `hasMembers` methods from the `Container` interface;
31+
- clear its content using the `clear` method from the `Container` interface;
32+
- unwrap Item value using the `values`, `value` methods from the `Container` interface;
3333

3434
getter methods:
3535

src/MemberContainer.php renamed to src/Container.php

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,8 @@
1515
* @template-extends IteratorAggregate<TKey, TValue>
1616
* @template-extends ArrayAccess<TKey, TValue>
1717
*/
18-
interface MemberContainer extends Countable, ArrayAccess, IteratorAggregate, StructuredField
18+
interface Container extends Countable, ArrayAccess, IteratorAggregate, StructuredField
1919
{
20-
/**
21-
* Tells whether the instance has no member.
22-
*/
23-
public function hasNoMembers(): bool;
24-
2520
/**
2621
* Tells whether the instance contains members.
2722
*/

src/Dictionary.php

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
use function is_array;
1616

1717
/**
18-
* @implements MemberOrderedMap<string, Item|InnerList<int, Item>>
18+
* @implements OrderedMap<string, Item|InnerList<int, Item>>
1919
*/
20-
final class Dictionary implements MemberOrderedMap
20+
final class Dictionary implements OrderedMap
2121
{
2222
/** @var array<string, Item|InnerList<int, Item>> */
2323
private array $members = [];
@@ -52,11 +52,11 @@ public static function fromAssociative(iterable $members = []): self
5252
* the first member represents the instance entry key
5353
* the second member represents the instance entry value
5454
*
55-
* @param MemberOrderedMap<string, Item|InnerList<int, Item>>|iterable<array{0:string, 1:InnerList<int, Item>|Item|ByteSequence|Token|bool|int|float|string}> $pairs
55+
* @param OrderedMap<string, Item|InnerList<int, Item>>|iterable<array{0:string, 1:InnerList<int, Item>|Item|ByteSequence|Token|bool|int|float|string}> $pairs
5656
*/
57-
public static function fromPairs(MemberOrderedMap|iterable $pairs = []): self
57+
public static function fromPairs(OrderedMap|iterable $pairs = []): self
5858
{
59-
if ($pairs instanceof MemberOrderedMap) {
59+
if ($pairs instanceof OrderedMap) {
6060
$pairs = $pairs->toPairs();
6161
}
6262

@@ -96,14 +96,9 @@ public function count(): int
9696
return count($this->members);
9797
}
9898

99-
public function hasNoMembers(): bool
100-
{
101-
return [] === $this->members;
102-
}
103-
10499
public function hasMembers(): bool
105100
{
106-
return !$this->hasNoMembers();
101+
return [] !== $this->members;
107102
}
108103

109104
/**
@@ -352,9 +347,9 @@ public function mergeAssociative(iterable ...$others): self
352347
/**
353348
* Merges multiple instances using iterable pairs.
354349
*
355-
* @param MemberOrderedMap<string, Item|InnerList<int, Item>>|iterable<array{0:string, 1:InnerList<int, Item>|Item|ByteSequence|Token|bool|int|float|string}> ...$others
350+
* @param OrderedMap<string, Item|InnerList<int, Item>>|iterable<array{0:string, 1:InnerList<int, Item>|Item|ByteSequence|Token|bool|int|float|string}> ...$others
356351
*/
357-
public function mergePairs(MemberOrderedMap|iterable ...$others): self
352+
public function mergePairs(OrderedMap|iterable ...$others): self
358353
{
359354
foreach ($others as $other) {
360355
$this->members = [...$this->members, ...self::fromPairs($other)->members];

src/DictionaryTest.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ public function it_can_be_instantiated_with_an_collection_of_item_or_inner_list(
3131

3232
self::assertEquals($arrayParams, iterator_to_array($instance));
3333
$instance->clear();
34-
self::assertTrue($instance->hasNoMembers());
3534
self::assertFalse($instance->hasMembers());
3635
}
3736

@@ -63,7 +62,7 @@ public function it_can_add_or_remove_members(): void
6362
$instance = Dictionary::fromAssociative($arrayParams);
6463

6564
self::assertCount(2, $instance);
66-
self::assertFalse($instance->hasNoMembers());
65+
self::assertTrue($instance->hasMembers());
6766
$instance->delete('boolean');
6867

6968
self::assertCount(1, $instance);
@@ -82,7 +81,7 @@ public function it_can_add_or_remove_members(): void
8281

8382
$instance->delete('foobar', 'string');
8483
self::assertCount(0, $instance);
85-
self::assertTrue($instance->hasNoMembers());
84+
self::assertFalse($instance->hasMembers());
8685
}
8786

8887
/** @test */

src/InnerList.php

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,9 @@ public function count(): int
8585
return count($this->members);
8686
}
8787

88-
public function hasNoMembers(): bool
89-
{
90-
return [] === $this->members;
91-
}
92-
9388
public function hasMembers(): bool
9489
{
95-
return !$this->hasNoMembers();
90+
return [] !== $this->members;
9691
}
9792

9893
/**

src/InnerListTest.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,12 @@ public function it_can_be_instantiated_with_an_collection_of_item(): void
1919
$booleanItem = Item::from(true);
2020
$arrayParams = [$stringItem, $booleanItem];
2121
$instance = InnerList::fromList($arrayParams, Parameters::fromAssociative(['test' => Item::from(42)]));
22-
self::assertFalse($instance->parameters->hasNoMembers());
2322

2423
self::assertSame($stringItem, $instance->get(0));
25-
self::assertFalse($instance->hasNoMembers());
24+
self::assertTrue($instance->hasMembers());
2625

2726
self::assertEquals($arrayParams, iterator_to_array($instance));
2827
$instance->clear();
29-
self::assertTrue($instance->hasNoMembers());
3028
self::assertFalse($instance->hasMembers());
3129
}
3230

@@ -40,7 +38,6 @@ public function it_can_add_or_remove_members(): void
4038

4139
self::assertCount(2, $instance);
4240
self::assertTrue($instance->has(1));
43-
self::assertTrue($instance->parameters->hasNoMembers());
4441
self::assertFalse($instance->parameters->hasMembers());
4542

4643
$instance->remove(1);
@@ -57,7 +54,6 @@ public function it_can_add_or_remove_members(): void
5754

5855
$instance->remove(0, 1);
5956
self::assertCount(0, $instance);
60-
self::assertTrue($instance->hasNoMembers());
6157
self::assertFalse($instance->hasMembers());
6258
}
6359

@@ -71,7 +67,7 @@ public function it_can_unshift_insert_and_replace(): void
7167
$container->replace(0, ByteSequence::fromDecoded('Hello World'));
7268

7369
self::assertCount(3, $container);
74-
self::assertFalse($container->hasNoMembers());
70+
self::assertTrue($container->hasMembers());
7571
self::assertSame('(:SGVsbG8gV29ybGQ=: 42.0 42)', $container->toHttpValue());
7672
}
7773

src/Item.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ private function __construct(
3131
/**
3232
* @param array{
3333
* 0:Token|ByteSequence|int|float|string|bool,
34-
* 1?:MemberOrderedMap<string, Item>|iterable<array{0:string, 1:Item|ByteSequence|Token|bool|int|float|string}>
34+
* 1?:OrderedMap<string, Item>|iterable<array{0:string, 1:Item|ByteSequence|Token|bool|int|float|string}>
3535
* } $pair
3636
*/
3737
public static function fromPair(array $pair): self

src/MemberList.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
/**
88
* @template TKey
99
* @template TValue of StructuredField
10-
* @template-extends MemberContainer<TKey, TValue>
10+
* @template-extends Container<TKey, TValue>
1111
*/
12-
interface MemberList extends MemberContainer
12+
interface MemberList extends Container
1313
{
1414
/**
1515
* Insert members at the beginning of the list.

src/OrderedList.php

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,9 @@ public function count(): int
9797
return count($this->members);
9898
}
9999

100-
public function hasNoMembers(): bool
101-
{
102-
return [] === $this->members;
103-
}
104-
105100
public function hasMembers(): bool
106101
{
107-
return !$this->hasNoMembers();
102+
return [] !== $this->members;
108103
}
109104

110105
/**

0 commit comments

Comments
 (0)