Skip to content

Commit 7131d2e

Browse files
committed
Fixing isValidType method when type is "json"
1 parent 3b32af1 commit 7131d2e

File tree

4 files changed

+31
-5
lines changed

4 files changed

+31
-5
lines changed

.php-cs-fixer.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@
1010

1111
$config = new PhpCsFixer\Config();
1212
return $config
13+
->setParallelConfig(PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect())
1314
->setRiskyAllowed(true)
1415
->setRules(array(
1516
'@PSR2' => true,
16-
'@PHP70Migration:risky' => true,
17+
'@PHP7x0Migration:risky' => true,
1718
'binary_operator_spaces' => array(
1819
'default' => 'align_single_space_minimal',
1920
'operators' => array('||' => null, '&&' => null)
@@ -26,5 +27,5 @@
2627
'psr_autoloading' => false,
2728
))
2829
->setUsingCache(true)
29-
->setFinder($finder);
30+
->setFinder($finder)
3031
;

lib/Doctrine/Validator.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,9 @@ public static function isValidType($var, $type)
171171
return true;
172172
} elseif ($var === null) {
173173
return true;
174+
} elseif ($type === 'json') {
175+
// JSON type can be object, array, string, number, boolean, or null (null handled above)
176+
return is_object($var) || is_array($var) || is_string($var) || is_numeric($var) || is_bool($var);
174177
} elseif (is_object($var)) {
175178
return $type == 'object';
176179
} elseif (is_array($var)) {
@@ -195,8 +198,6 @@ public static function isValidType($var, $type)
195198
return is_array($var);
196199
case 'object':
197200
return is_object($var);
198-
case 'json':
199-
return is_object($var) || is_array($var);
200201
case 'boolean':
201202
return is_bool($var) || (is_numeric($var) && ($var == 0 || $var == 1));
202203
case 'timestamp':

phpstan-baseline.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1222,7 +1222,7 @@
12221222
$ignoreErrors[] = array(
12231223
'message' => '#^Call to function is_array\\(\\) with mixed will always evaluate to false\\.$#',
12241224
'identifier' => 'function.impossibleType',
1225-
'count' => 3,
1225+
'count' => 2,
12261226
'path' => __DIR__ . '/lib/Doctrine/Validator.php',
12271227
);
12281228
$ignoreErrors[] = array(

tests/ValidatorTestCase.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,30 @@ public function testIsValidType()
113113
$this->assertFalse(Doctrine_Validator::isValidType($var, 'float'));
114114
$this->assertFalse(Doctrine_Validator::isValidType($var, 'array'));
115115
$this->assertTrue(Doctrine_Validator::isValidType($var, 'object'));
116+
117+
// Test JSON type validation
118+
$var = array('key' => 'value');
119+
$this->assertTrue(Doctrine_Validator::isValidType($var, 'json'));
120+
$this->assertTrue(Doctrine_Validator::isValidType($var, 'array'));
121+
$this->assertFalse(Doctrine_Validator::isValidType($var, 'object'));
122+
123+
$var = new stdClass();
124+
$var->property = 'value';
125+
$this->assertTrue(Doctrine_Validator::isValidType($var, 'json'));
126+
$this->assertFalse(Doctrine_Validator::isValidType($var, 'array'));
127+
$this->assertTrue(Doctrine_Validator::isValidType($var, 'object'));
128+
129+
$var = 'string';
130+
$this->assertTrue(Doctrine_Validator::isValidType($var, 'json'));
131+
132+
$var = 123;
133+
$this->assertTrue(Doctrine_Validator::isValidType($var, 'json'));
134+
135+
$var = null;
136+
$this->assertTrue(Doctrine_Validator::isValidType($var, 'json'));
137+
138+
$var = true;
139+
$this->assertTrue(Doctrine_Validator::isValidType($var, 'json'));
116140
}
117141

118142
public function testValidate2()

0 commit comments

Comments
 (0)