diff --git a/src/Checker/TypeChecker.php b/src/Checker/TypeChecker.php index 4dbea5b..4aadfbe 100644 --- a/src/Checker/TypeChecker.php +++ b/src/Checker/TypeChecker.php @@ -33,8 +33,12 @@ public function notNull(mixed $value): bool /** * Value has to be boolean or integer[0,1]. */ - public function boolean(mixed $value): bool + public function boolean(mixed $value, bool $strict = false): bool { - return \is_bool($value) || (\is_numeric($value) && ($value === 0 || $value === 1)); + if (\is_bool($value)) { + return true; + } + + return false === $strict && (\is_numeric($value) && ($value === 0 || $value === 1)); } } diff --git a/tests/src/Unit/Checkers/TypesTest.php b/tests/src/Unit/Checkers/TypesTest.php index 0e97c93..8e8f094 100644 --- a/tests/src/Unit/Checkers/TypesTest.php +++ b/tests/src/Unit/Checkers/TypesTest.php @@ -66,4 +66,19 @@ public function testBoolean(): void $this->assertFalse($checker->boolean('0')); $this->assertFalse($checker->boolean('1')); } + + public function testBooleanStrict(): void + { + $checker = new TypeChecker(); + + $this->assertTrue($checker->boolean(true, true)); + $this->assertTrue($checker->boolean(false, true)); + + $this->assertFalse($checker->boolean(1, true)); + $this->assertFalse($checker->boolean(0, true)); + $this->assertFalse($checker->boolean('true', true)); + $this->assertFalse($checker->boolean('false', true)); + $this->assertFalse($checker->boolean('0', true)); + $this->assertFalse($checker->boolean('1', true)); + } }