Skip to content

Commit 457df5e

Browse files
committed
Added PHPstan templates, fixed level 8 rules
1 parent 7e5801e commit 457df5e

11 files changed

+275
-261
lines changed

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
}
1515
],
1616
"minimum-stability": "dev",
17+
"prefer-stable": true,
1718
"require": {
1819
"php": "^8.0",
1920
"php-etl/bucket-contracts": "^0.1.0@dev"

composer.lock

Lines changed: 162 additions & 192 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

phpspec.yml

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
extensions:
2-
LeanPHP\PhpSpec\CodeCoverage\CodeCoverageExtension:
3-
format:
4-
- html
5-
- clover
6-
- xml
7-
output:
8-
html: reports/phpspec-coverage-html
9-
clover: reports/phpspec-coverage-clover/coverage.xml
10-
xml: reports/phpspec-coverage-xml
11-
blacklist:
12-
- vendor
13-
whitelist:
14-
- src
1+
#extensions:
2+
# LeanPHP\PhpSpec\CodeCoverage\CodeCoverageExtension:
3+
# format:
4+
# - html
5+
# - clover
6+
# - xml
7+
# output:
8+
# html: reports/phpspec-coverage-html
9+
# clover: reports/phpspec-coverage-clover/coverage.xml
10+
# xml: reports/phpspec-coverage-xml
11+
# blacklist:
12+
# - vendor
13+
# whitelist:
14+
# - src
1515
formatter.name: pretty
1616
stop_on_failure: true
1717
suites:

src/AcceptanceResultBucket.php

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,26 @@
22

33
namespace Kiboko\Component\Bucket;
44

5-
use Kiboko\Contract\Bucket\AcceptanceResultBucketInterface;
5+
use Kiboko\Contract\Bucket as Contract;
66

7-
final class AcceptanceResultBucket implements AcceptanceResultBucketInterface
7+
/**
8+
* @template Type
9+
* @implements Contract\AcceptanceResultBucketInterface<Type>
10+
*/
11+
final class AcceptanceResultBucket implements Contract\AcceptanceResultBucketInterface
812
{
9-
/** @var array<mixed> */
10-
private iterable $values;
13+
/** @var array<int, Type> */
14+
private array $values;
1115

12-
/**
13-
* @param array<mixed> $values
14-
*/
16+
/** @param Type ...$values */
1517
public function __construct(...$values)
1618
{
1719
$this->values = $values;
1820
}
1921

2022
/**
21-
* @param array<mixed> $values
23+
* @param Type ...$values
24+
* @return AcceptanceResultBucket<Type>
2225
*/
2326
public function accept(...$values): self
2427
{
@@ -27,6 +30,7 @@ public function accept(...$values): self
2730
return $this;
2831
}
2932

33+
/** @return iterable<Type> */
3034
public function walkAcceptance(): iterable
3135
{
3236
return new \ArrayIterator($this->values);

src/AppendableIteratorAcceptanceResultBucket.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,18 @@
22

33
namespace Kiboko\Component\Bucket;
44

5-
use Kiboko\Contract\Bucket\AcceptanceResultBucketInterface;
5+
use Kiboko\Contract\Bucket as Contract;
66

7-
final class AppendableIteratorAcceptanceResultBucket implements AcceptanceResultBucketInterface
7+
/**
8+
* @template Type
9+
* @implements Contract\AcceptanceResultBucketInterface<Type>
10+
*/
11+
final class AppendableIteratorAcceptanceResultBucket implements Contract\AcceptanceResultBucketInterface
812
{
9-
private iterable $iterator;
13+
/** @var \AppendIterator<Type> */
14+
private \AppendIterator $iterator;
1015

16+
/** @param \Iterator<Contract\AcceptanceResultBucketInterface<Type>> ...$iterators */
1117
public function __construct(\Iterator ...$iterators)
1218
{
1319
$this->iterator = new \AppendIterator();
@@ -16,13 +22,15 @@ public function __construct(\Iterator ...$iterators)
1622
}
1723
}
1824

19-
public function append(\Iterator ...$iterators)
25+
/** @param \Iterator<Contract\AcceptanceResultBucketInterface<Type>> ...$iterators */
26+
public function append(\Iterator ...$iterators): void
2027
{
2128
foreach ($iterators as $iterator) {
2229
$this->iterator->append($iterator);
2330
}
2431
}
2532

33+
/** @return iterable<Type> */
2634
public function walkAcceptance(): iterable
2735
{
2836
return $this->iterator;

src/AppendableIteratorRejectionResultBucket.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,18 @@
22

33
namespace Kiboko\Component\Bucket;
44

5-
use Kiboko\Contract\Bucket\RejectionResultBucketInterface;
5+
use Kiboko\Contract\Bucket as Contract;
66

7-
final class AppendableIteratorRejectionResultBucket implements RejectionResultBucketInterface
7+
/**
8+
* @template Type
9+
* @implements Contract\RejectionResultBucketInterface<Type>
10+
*/
11+
final class AppendableIteratorRejectionResultBucket implements Contract\RejectionResultBucketInterface
812
{
9-
private iterable $iterator;
13+
/** @var \AppendIterator<Type> */
14+
private \AppendIterator $iterator;
1015

16+
/** @param \Iterator<Contract\RejectionResultBucketInterface<Type>> ...$iterators */
1117
public function __construct(\Iterator ...$iterators)
1218
{
1319
$this->iterator = new \AppendIterator();
@@ -16,13 +22,15 @@ public function __construct(\Iterator ...$iterators)
1622
}
1723
}
1824

19-
public function append(\Iterator ...$iterators)
25+
/** @param \Iterator<Contract\RejectionResultBucketInterface<Type>> ...$iterators */
26+
public function append(\Iterator ...$iterators): void
2027
{
2128
foreach ($iterators as $iterator) {
2229
$this->iterator->append($iterator);
2330
}
2431
}
2532

33+
/** @return iterable<Type> */
2634
public function walkRejection(): iterable
2735
{
2836
return $this->iterator;

src/ComplexResultBucket.php

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,47 @@
22

33
namespace Kiboko\Component\Bucket;
44

5-
use Kiboko\Contract\Bucket\AcceptanceResultBucketInterface;
6-
use Kiboko\Contract\Bucket\RejectionResultBucketInterface;
7-
use Kiboko\Contract\Bucket\ResultBucketInterface;
5+
use Kiboko\Contract\Bucket as Contract;
86

7+
/**
8+
* @template Type
9+
* @implements Contract\AcceptanceResultBucketInterface<Type>
10+
* @implements Contract\RejectionResultBucketInterface<Type>
11+
*/
912
final class ComplexResultBucket implements
10-
AcceptanceResultBucketInterface,
11-
RejectionResultBucketInterface
13+
Contract\AcceptanceResultBucketInterface,
14+
Contract\RejectionResultBucketInterface
1215
{
13-
/** @var AcceptanceResultBucketInterface[] */
14-
private $acceptances;
15-
/** @var RejectionResultBucketInterface[] */
16-
private $rejections;
16+
/** @var array<Contract\AcceptanceResultBucketInterface<Type>> */
17+
private array $acceptances;
18+
/** @var array<Contract\RejectionResultBucketInterface<Type>> */
19+
private array $rejections;
1720

18-
public function __construct(ResultBucketInterface... $buckets)
21+
/** @param Contract\AcceptanceResultBucketInterface<Type>|Contract\RejectionResultBucketInterface<Type> ...$buckets */
22+
public function __construct(Contract\AcceptanceResultBucketInterface|Contract\RejectionResultBucketInterface... $buckets)
1923
{
2024
$this->acceptances = array_filter(
2125
$buckets,
22-
function (ResultBucketInterface $bucket) {
23-
return $bucket instanceof AcceptanceResultBucketInterface;
26+
function (Contract\ResultBucketInterface $bucket) {
27+
return $bucket instanceof Contract\AcceptanceResultBucketInterface;
2428
}
2529
);
2630

2731
$this->rejections = array_filter(
2832
$buckets,
29-
function (ResultBucketInterface $bucket) {
30-
return $bucket instanceof RejectionResultBucketInterface;
33+
function (Contract\ResultBucketInterface $bucket) {
34+
return $bucket instanceof Contract\RejectionResultBucketInterface;
3135
}
3236
);
3337
}
3438

39+
/** @param Type ...$values */
3540
public function accept(...$values): void
3641
{
3742
$this->acceptances[] = new AcceptanceResultBucket(...$values);
3843
}
3944

45+
/** @param Type ...$values */
4046
public function reject(...$values): void
4147
{
4248
$this->rejections[] = new RejectionResultBucket(...$values);
@@ -46,7 +52,7 @@ public function walkAcceptance(): iterable
4652
{
4753
$iterator = new \AppendIterator();
4854
foreach ($this->acceptances as $child) {
49-
/** @var array|\Traversable $acceptance */
55+
/** @var array<Type>|\Traversable<Type> $acceptance */
5056
$acceptance = $child->walkAcceptance();
5157
if ($acceptance instanceof \Iterator) {
5258
$iterator->append($acceptance);
@@ -64,7 +70,7 @@ public function walkRejection(): iterable
6470
{
6571
$iterator = new \AppendIterator();
6672
foreach ($this->rejections as $child) {
67-
/** @var array|\Traversable $rejection */
73+
/** @var array<Type>|\Traversable<Type> $rejection */
6874
$rejection = $child->walkRejection();
6975
if ($rejection instanceof \Iterator) {
7076
$iterator->append($rejection);

src/EmptyResultBucket.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22

33
namespace Kiboko\Component\Bucket;
44

5-
use Kiboko\Contract\Bucket\AcceptanceResultBucketInterface;
6-
use Kiboko\Contract\Bucket\RejectionResultBucketInterface;
5+
use Kiboko\Contract\Bucket as Contract;
76

7+
/**
8+
* @template Type
9+
* @implements Contract\AcceptanceResultBucketInterface<Type>
10+
* @implements Contract\RejectionResultBucketInterface<Type>
11+
*/
812
final class EmptyResultBucket implements
9-
AcceptanceResultBucketInterface,
10-
RejectionResultBucketInterface
13+
Contract\AcceptanceResultBucketInterface,
14+
Contract\RejectionResultBucketInterface
1115
{
1216
public function walkAcceptance(): iterable
1317
{

src/IteratorAcceptanceResultBucket.php

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,24 @@
22

33
namespace Kiboko\Component\Bucket;
44

5-
use Kiboko\Contract\Bucket\AcceptanceResultBucketInterface;
5+
use Kiboko\Contract\Bucket as Contract;
66

7-
final class IteratorAcceptanceResultBucket implements AcceptanceResultBucketInterface
7+
/**
8+
* @template Type
9+
* @implements Contract\AcceptanceResultBucketInterface<Type>
10+
*/
11+
final class IteratorAcceptanceResultBucket implements Contract\AcceptanceResultBucketInterface
812
{
9-
/** @var \Iterator */
10-
private $iterator;
13+
/** @var \Iterator<Type> */
14+
private \Iterator $iterator;
1115

12-
/**
13-
* @param \Iterator $iterator
14-
*/
16+
/** @param \Iterator<Type> $iterator */
1517
public function __construct(\Iterator $iterator)
1618
{
1719
$this->iterator = $iterator;
1820
}
1921

22+
/** @return iterable<Type> */
2023
public function walkAcceptance(): iterable
2124
{
2225
return $this->iterator;

src/IteratorRejectionResultBucket.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,24 @@
22

33
namespace Kiboko\Component\Bucket;
44

5-
use Kiboko\Contract\Bucket\RejectionResultBucketInterface;
5+
use Kiboko\Contract\Bucket as Contract;
66

7-
final class IteratorRejectionResultBucket implements RejectionResultBucketInterface
7+
/**
8+
* @template Type
9+
* @implements Contract\RejectionResultBucketInterface<Type>
10+
*/
11+
final class IteratorRejectionResultBucket implements Contract\RejectionResultBucketInterface
812
{
9-
/** @var \Iterator */
10-
private $iterator;
13+
/** @var \Iterator<Type> */
14+
private \Iterator $iterator;
1115

16+
/** @param \Iterator<Type> $iterator */
1217
public function __construct(\Iterator $iterator)
1318
{
1419
$this->iterator = $iterator;
1520
}
1621

22+
/** @return iterable<Type> */
1723
public function walkRejection(): iterable
1824
{
1925
return $this->iterator;

0 commit comments

Comments
 (0)