PHP 7.4: New ParameterValues/RemovedImplodeFlexibleParamOrder sniff by jrfnl · Pull Request #846 · PHPCompatibility/PHPCompatibility

@jrfnl jrfnl mentioned this pull request

Jul 22, 2019

40 tasks

@jrfnl

>  For historical reasons, the `implode()` function supports passing the `$glue` and `$pieces` parameters in reverse order from the documented order of arguments. This is inconsistent and makes the argument handling non-standard (for example, strict types are not respected). This also affects the alias `join()`.
>
> Proposal: Emit a deprecation warning when calling `implode($pieces, $glue)` or `join($pieces, $glue)`. Calling the function with just an array continues to be allowed: `implode($pieces)` does not generate a deprecation warning.

The tolerance for the reverse order is expected to be removed completely in PHP 8.0.

Refs:
* https://wiki.php.net/rfc/deprecations_php_7_4#implode_parameter_order_mix
* https://php.net/manual/en/function.implode.php
* php/php-src@46b9824

The new sniff tries to be quite comprehensive and to catch as much as is reliably sniffable.

Some test runs over well-known PHP projects have fine-tuned the sniff as it is now.

Includes unit tests.

Related to 808

wimg

wimg approved these changes Jul 22, 2019