File tree Expand file tree Collapse file tree 4 files changed +60
-0
lines changed
src/Parameter/TypeResolver
tests/Unit/Parameter/TypeResolver Expand file tree Collapse file tree 4 files changed +60
-0
lines changed Original file line number Diff line number Diff line change 1+ <?php declare (strict_types=1 );
2+
3+ namespace PrinsFrank \ObjectResolver \Parameter \TypeResolver ;
4+
5+ use Override ;
6+ use PrinsFrank \ObjectResolver \ObjectResolver ;
7+
8+ /** @implements TypeResolver<bool> */
9+ class FalseResolver implements TypeResolver {
10+ #[Override]
11+ public function acceptsType (string $ type ): bool {
12+ return $ type === 'false ' ;
13+ }
14+
15+ #[Override]
16+ public function resolveValue (string $ type , mixed $ value , ObjectResolver $ objectResolver ): ?bool {
17+ if (is_bool ($ value )) {
18+ return $ value ;
19+ }
20+
21+ if ($ value === 'false ' || $ value === '0 ' || $ value === 0 ) {
22+ return false ;
23+ }
24+
25+ return null ;
26+ }
27+ }
Original file line number Diff line number Diff line change 1+ <?php declare (strict_types=1 );
2+
3+ namespace PrinsFrank \ObjectResolver \Parameter \TypeResolver ;
4+
5+ use Override ;
6+ use PrinsFrank \ObjectResolver \ObjectResolver ;
7+
8+ /** @implements TypeResolver<bool> */
9+ class TrueResolver implements TypeResolver {
10+ #[Override]
11+ public function acceptsType (string $ type ): bool {
12+ return $ type === 'true ' ;
13+ }
14+
15+ #[Override]
16+ public function resolveValue (string $ type , mixed $ value , ObjectResolver $ objectResolver ): ?bool {
17+ if (is_bool ($ value )) {
18+ return $ value ;
19+ }
20+
21+ if ($ value === 'true ' || $ value === '1 ' || $ value === 1 ) {
22+ return true ;
23+ }
24+
25+ return null ;
26+ }
27+ }
Original file line number Diff line number Diff line change @@ -12,11 +12,13 @@ public function __construct(
1212 ClassResolver::class,
1313 DateTimeImmutableResolver::class,
1414 DateTimeResolver::class,
15+ FalseResolver::class,
1516 FloatResolver::class,
1617 IntBackedEnumResolver::class,
1718 IntResolver::class,
1819 StringBackedEnumResolver::class,
1920 StringResolver::class,
21+ TrueResolver::class,
2022 UnitEnumResolver::class,
2123 ]
2224 ) {
Original file line number Diff line number Diff line change 55use PHPUnit \Framework \Attributes \CoversClass ;
66use PHPUnit \Framework \TestCase ;
77use PrinsFrank \ObjectResolver \Exception \InvalidTypeResolverException ;
8+ use PrinsFrank \ObjectResolver \Parameter \TypeResolver \FalseResolver ;
89use PrinsFrank \ObjectResolver \Parameter \TypeResolver \IntBackedEnumResolver ;
910use PrinsFrank \ObjectResolver \Parameter \TypeResolver \StringBackedEnumResolver ;
1011use PrinsFrank \ObjectResolver \Parameter \TypeResolver \BoolResolver ;
1415use PrinsFrank \ObjectResolver \Parameter \TypeResolver \FloatResolver ;
1516use PrinsFrank \ObjectResolver \Parameter \TypeResolver \IntResolver ;
1617use PrinsFrank \ObjectResolver \Parameter \TypeResolver \StringResolver ;
18+ use PrinsFrank \ObjectResolver \Parameter \TypeResolver \TrueResolver ;
1719use PrinsFrank \ObjectResolver \Parameter \TypeResolver \TypeResolverProvider ;
1820use PrinsFrank \ObjectResolver \Parameter \TypeResolver \UnitEnumResolver ;
1921
@@ -27,11 +29,13 @@ public function testAll(): void {
2729 ClassResolver::class,
2830 DateTimeImmutableResolver::class,
2931 DateTimeResolver::class,
32+ FalseResolver::class,
3033 FloatResolver::class,
3134 IntBackedEnumResolver::class,
3235 IntResolver::class,
3336 StringBackedEnumResolver::class,
3437 StringResolver::class,
38+ TrueResolver::class,
3539 UnitEnumResolver::class,
3640 ],
3741 $ typeResolverProvider ->all (),
You can’t perform that action at this time.
0 commit comments