Skip to content

NewArrayStringDereferencing: recognize dereferencing using curly braces#851

Merged
wimg merged 1 commit intomasterfrom
feature/newarraystringdereferencing-recognize-curlies
Aug 28, 2019
Merged

NewArrayStringDereferencing: recognize dereferencing using curly braces#851
wimg merged 1 commit intomasterfrom
feature/newarraystringdereferencing-recognize-curlies

Conversation

@jrfnl
Copy link
Copy Markdown
Member

@jrfnl jrfnl commented Jul 29, 2019

What with PHP 7.4 deprecating the array dereferencing syntax with curly braces, I've been doing some research on where this was supported up to now.

Turns out that, as of PHP 7.0, dereferencing array/string literals using curly braces has been supported.
See: https://3v4l.org/SlXd2

While the PHP 7.0 changelog makes no note of this, the change was probably part of the PHP 7.0 Uniform Variable Syntax changes.

This PR adjusts the PHPCompatibility.Syntax.NewArrayStringDereferencing sniff to:

  • Also recognize curly braces.;
  • Throw an error for each access detected, i.e. [1, [20, 21, 22], 3][1][1] would previously throw just the one error, now it will throw two.

Includes unit tests.

The actual logic has been split off to a separate isArrayStringDereferencing() method to allow it to be re-used for the upcoming sniff which will detect the PHP 7.4 curly brace deprecation.

What with PHP 7.4 deprecating the array dereferencing syntax with curly braces, I've been doing some research on where this was supported up to now.

Turns out that, as of PHP 7.0, dereferencing array/string literals using curly braces has been supported.
See: https://3v4l.org/SlXd2

While the PHP 7.0 changelog makes no note of this, the change was probably part of the PHP 7.0 [Uniform Variable Syntax](https://wiki.php.net/rfc/uniform_variable_syntax) changes.

This PR adjusts the `PHPCompatibility.Syntax.NewArrayStringDereferencing` sniff to:
* Also recognize curly braces.;
* Throw an error for each access detected, i.e. `[1, [20, 21, 22], 3][1][1]` would previously throw just the one error, now it will throw two.

Includes unit tests.

The actual logic has been split off to a separate `isArrayStringDereferencing()` method to allow it to be re-used for the upcoming sniff which will detect the PHP 7.4 curly brace deprecation.
@wimg wimg merged commit 1ba582b into master Aug 28, 2019
@delete-merged-branch delete-merged-branch bot deleted the feature/newarraystringdereferencing-recognize-curlies branch August 28, 2019 13:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants