Skip to content

Commit

Permalink
minor #34097 [Validator] Ensure numeric subpaths do not cause errors …
Browse files Browse the repository at this point in the history
…on PHP 7.4 (alexpott)

This PR was squashed before being merged into the 3.4 branch (closes #34097).

Discussion
----------

[Validator] Ensure numeric subpaths do not cause errors on PHP 7.4

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #... <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

Drupal is testing on PHP7.4 and hitting a problem with the line `if ('[' === $subPath[0]) {` because `$subPath` is not a string. We're already doing string casting in the method so we could do it once and be done. Note this is not a problem on the master branch / SF5 because of primitive typehinting.

Without this fix on PHP7.4 you see errors like...
```
1) Symfony\Component\Validator\Tests\Util\PropertyPathTest::testAppend with data set #5 ('0', 1, '0.1', 'Numeric subpaths do not cause...rrors.')
Trying to access array offset on value of type int
```

Commits
-------

6244a1e [Validator] Ensure numeric subpaths do not cause errors on PHP 7.4
  • Loading branch information
Tobion committed Oct 25, 2019
2 parents 278280a + 6244a1e commit c953ba8
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 2 deletions.
Expand Up @@ -32,6 +32,7 @@ public function provideAppendPaths()
['foo', 'bar', 'foo.bar', 'It append the subPath to the basePath'],
['foo', '[bar]', 'foo[bar]', 'It does not include the dot separator if subPath uses the array notation'],
['0', 'bar', '0.bar', 'Leading zeros are kept.'],
['0', 1, '0.1', 'Numeric subpaths do not cause PHP 7.4 errors.'],
];
}
}
5 changes: 3 additions & 2 deletions src/Symfony/Component/Validator/Util/PropertyPath.php
Expand Up @@ -36,12 +36,13 @@ class PropertyPath
*/
public static function append($basePath, $subPath)
{
if ('' !== (string) $subPath) {
$subPath = (string) $subPath;
if ('' !== $subPath) {
if ('[' === $subPath[0]) {
return $basePath.$subPath;
}

return '' !== (string) $basePath ? $basePath.'.'.$subPath : $subPath;
return '' !== $basePath ? $basePath.'.'.$subPath : $subPath;
}

return $basePath;
Expand Down

0 comments on commit c953ba8

Please sign in to comment.