Skip to content

Commit ec91725

Browse files
committed
Feature/Add support for PHP 8.4 and typing hint enhancement.
1 parent 5940732 commit ec91725

File tree

6 files changed

+140
-26
lines changed

6 files changed

+140
-26
lines changed

.gitattributes

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,7 @@
33
/phpunit.xml export-ignore
44
/tests export-ignore
55
/README.md export-ignore
6-
sonar-project.properties export-ignore
6+
/sonar-project.properties export-ignore
7+
/phpstan.neon export-ignore
8+
test.xml export-ignore
9+
/wiki export-ignore

composer.json

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"mockery/mockery": "^1.6.0",
2020
"pestphp/pest": "^2.0",
2121
"pestphp/pest-plugin-faker": "^2.0",
22-
"phpstan/phpstan": "^1.0",
22+
"phpstan/phpstan": "^1.12",
2323
"phpstan/extension-installer": "^1.3",
2424
"phpstan/phpstan-mockery": "^1.1"
2525
},
@@ -36,11 +36,7 @@
3636
"scripts": {
3737
"test": "vendor/bin/pest --configuration=phpunit.xml --coverage-clover=coverage.xml --log-junit=test.xml",
3838
"test-cov": "vendor/bin/pest --configuration=phpunit.xml --coverage-html=coverage",
39-
"analyse": "vendor/bin/phpstan analyse src tests --no-progress --level=8",
40-
"check": [
41-
"@analyse",
42-
"@test"
43-
]
39+
"analyse": "vendor/bin/phpstan analyse --no-progress"
4440
},
4541
"config": {
4642
"allow-plugins": {

phpstan.neon

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
parameters:
2+
paths:
3+
- src/
4+
- tests/
5+
level: 9

src/Criteria.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ public function withPageOffset(int $offset): self
179179
);
180180
}
181181

182-
public function withPageNumber(int $number, int $size = null): self
182+
public function withPageNumber(int $number, ?int $size = null): self
183183
{
184184
return self::create(
185185
groups: $this->groups,

src/Filter.php

Lines changed: 78 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ final class Filter implements ValueObject
2222
*
2323
* @param string $field
2424
* @param Operator $operator
25-
* @param mixed $value
25+
* @param scalar|null|array<scalar> $value
2626
*/
2727
public function __construct(
2828
private readonly string $field,
2929
private readonly Operator $operator,
30-
private readonly mixed $value,
30+
private readonly bool|float|int|string|null|array $value,
3131
) {
3232
$this->check();
3333
}
@@ -37,10 +37,10 @@ public function __construct(
3737
*
3838
* @param string $field
3939
* @param Operator $operator
40-
* @param mixed $value
40+
* @param scalar|null|array<scalar> $value
4141
* @return Filter
4242
*/
43-
public static function create(string $field, Operator $operator, mixed $value): self
43+
public static function create(string $field, Operator $operator, bool|float|int|string|null|array $value): self
4444
{
4545
return new self($field, $operator, $value);
4646
}
@@ -67,62 +67,122 @@ public static function fromArray(array $filter): self
6767
);
6868
}
6969

70-
public static function equal(string $field, mixed $value): self
70+
/**
71+
* @param string $field
72+
* @param bool|float|int|string|null $value
73+
* @return self
74+
*/
75+
public static function equal(string $field, bool|float|int|string|null $value): self
7176
{
7277
return self::create($field, Operator::EQUAL, $value);
7378
}
7479

75-
public static function notEqual(string $field, mixed $value): self
80+
/**
81+
* @param string $field
82+
* @param bool|float|int|string|null $value
83+
* @return self
84+
*/
85+
public static function notEqual(string $field, bool|float|int|string|null $value): self
7686
{
7787
return self::create($field, Operator::NOT_EQUAL, $value);
7888
}
7989

80-
public static function greaterThan(string $field, mixed $value): self
90+
/**
91+
* @param string $field
92+
* @param bool|float|int|string|null $value
93+
* @return self
94+
*/
95+
public static function greaterThan(string $field, bool|float|int|string|null $value): self
8196
{
8297
return self::create($field, Operator::GT, $value);
8398
}
8499

85-
public static function greaterOrEqualThan(string $field, mixed $value): self
100+
/**
101+
* @param string $field
102+
* @param bool|float|int|string|null $value
103+
* @return self
104+
*/
105+
public static function greaterOrEqualThan(string $field, bool|float|int|string|null $value): self
86106
{
87107
return self::create($field, Operator::GTE, $value);
88108
}
89109

90-
public static function lessThan(string $field, mixed $value): self
110+
/**
111+
* @param string $field
112+
* @param bool|float|int|string|null $value
113+
* @return self
114+
*/
115+
public static function lessThan(string $field, bool|float|int|string|null $value): self
91116
{
92117
return self::create($field, Operator::LT, $value);
93118
}
94119

95-
public static function lessOrEqualThan(string $field, mixed $value): self
120+
/**
121+
* @param string $field
122+
* @param bool|float|int|string|null $value
123+
* @return self
124+
*/
125+
public static function lessOrEqualThan(string $field, bool|float|int|string|null $value): self
96126
{
97127
return self::create($field, Operator::LTE, $value);
98128
}
99129

100-
public static function in(string $field, mixed $value): self
130+
/**
131+
* @param string $field
132+
* @param array<scalar> $value
133+
* @return self
134+
*/
135+
public static function in(string $field, array $value): self
101136
{
102137
return self::create($field, Operator::IN, $value);
103138
}
104139

105-
public static function notIn(string $field, mixed $value): self
140+
/**
141+
* @param string $field
142+
* @param array<scalar> $value
143+
* @return self
144+
*/
145+
public static function notIn(string $field, array $value): self
106146
{
107147
return self::create($field, Operator::NOT_IN, $value);
108148
}
109149

110-
public static function like(string $field, mixed $value): self
150+
/**
151+
* @param string $field
152+
* @param bool|float|int|string|null $value
153+
* @return self
154+
*/
155+
public static function like(string $field, bool|float|int|string|null $value): self
111156
{
112157
return self::create($field, Operator::LIKE, $value);
113158
}
114159

115-
public static function notLike(string $field, mixed $value): self
160+
/**
161+
* @param string $field
162+
* @param bool|float|int|string|null $value
163+
* @return self
164+
*/
165+
public static function notLike(string $field, bool|float|int|string|null $value): self
116166
{
117167
return self::create($field, Operator::NOT_LIKE, $value);
118168
}
119169

120-
public static function contains(string $field, mixed $value): self
170+
/**
171+
* @param string $field
172+
* @param bool|float|int|string|null $value
173+
* @return self
174+
*/
175+
public static function contains(string $field, bool|float|int|string|null $value): self
121176
{
122177
return self::create($field, Operator::CONTAINS, $value);
123178
}
124179

125-
public static function notContains(string $field, mixed $value): self
180+
/**
181+
* @param string $field
182+
* @param bool|float|int|string|null $value
183+
* @return self
184+
*/
185+
public static function notContains(string $field, bool|float|int|string|null $value): self
126186
{
127187
return self::create($field, Operator::NOT_CONTAINS, $value);
128188
}
@@ -150,9 +210,9 @@ public function operator(): Operator
150210
/**
151211
* Return the field value.
152212
*
153-
* @return mixed
213+
* @return scalar|null|array<scalar>
154214
*/
155-
public function value(): mixed
215+
public function value(): bool|float|int|string|null|array
156216
{
157217
return $this->value;
158218
}

src/FilterGroup.php

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,31 +69,61 @@ public function addFilter(Filter $new): self
6969
return $this;
7070
}
7171

72+
/**
73+
* @param string $field
74+
* @param bool|float|int|string|null $value
75+
* @return self
76+
*/
7277
public function addFilterEqual(string $field, mixed $value): self
7378
{
7479
return $this->addFilter(Filter::equal($field, $value));
7580
}
7681

82+
/**
83+
* @param string $field
84+
* @param bool|float|int|string|null $value
85+
* @return self
86+
*/
7787
public function addFilterNotEqual(string $field, mixed $value): self
7888
{
7989
return $this->addFilter(Filter::notEqual($field, $value));
8090
}
8191

92+
/**
93+
* @param string $field
94+
* @param bool|float|int|string|null $value
95+
* @return self
96+
*/
8297
public function addFilterGreaterThan(string $field, mixed $value): self
8398
{
8499
return $this->addFilter(Filter::greaterThan($field, $value));
85100
}
86101

102+
/**
103+
* @param string $field
104+
* @param bool|float|int|string|null $value
105+
* @return self
106+
*/
87107
public function addFilterGreaterOrEqualThan(string $field, mixed $value): self
88108
{
89109
return $this->addFilter(Filter::greaterOrEqualThan($field, $value));
90110
}
91111

112+
/**
113+
* @param string $field
114+
* @param bool|float|int|string|null $value
115+
* @return self
116+
*/
92117
public function addFilterLessThan(string $field, mixed $value): self
93118
{
94119
return $this->addFilter(Filter::lessThan($field, $value));
95120
}
96121

122+
/**
123+
* @param string $field
124+
* @param bool|float|int|string|null $value
125+
* @return self
126+
*/
97127
public function addFilterLessOrEqualThan(string $field, mixed $value): self
98128
{
99129
return $this->addFilter(Filter::lessOrEqualThan($field, $value));
@@ -119,21 +149,41 @@ public function addFilterNotIn(string $field, array $value): self
119149
return $this->addFilter(Filter::notIn($field, $value));
120150
}
121151

152+
/**
153+
* @param string $field
154+
* @param string $value
155+
* @return self
156+
*/
122157
public function addFilterLike(string $field, string $value): self
123158
{
124159
return $this->addFilter(Filter::like($field, $value));
125160
}
126161

162+
/**
163+
* @param string $field
164+
* @param string $value
165+
* @return self
166+
*/
127167
public function addFilterNotLike(string $field, string $value): self
128168
{
129169
return $this->addFilter(Filter::notLike($field, $value));
130170
}
131171

172+
/**
173+
* @param string $field
174+
* @param string $value
175+
* @return self
176+
*/
132177
public function addFilterContains(string $field, string $value): self
133178
{
134179
return $this->addFilter(Filter::contains($field, $value));
135180
}
136181

182+
/**
183+
* @param string $field
184+
* @param string $value
185+
* @return self
186+
*/
137187
public function addFilterNotContains(string $field, string $value): self
138188
{
139189
return $this->addFilter(Filter::notContains($field, $value));

0 commit comments

Comments
 (0)