github PHPCompatibility/PHPCompatibility 9.1.0
PHPCompatibility 9.1.0

latest releases: 9.3.5, 9.3.4, 9.3.3...
5 years ago

See all related issues and PRs in the 9.1.0 milestone.

Added

  • 🌟 New PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue sniff to detect code which could be affected by the PHP 7.0 change in the values reported by func_get_arg(), func_get_args(), debug_backtrace() and exception backtraces. #750. Fixes #585.
  • 🌟 New PHPCompatibility.MethodUse.NewDirectCallsToClone sniff to detect direct call to a __clone() magic method which wasn't allowed prior to PHP 7.0. #743. Fixes #629.
  • 🌟 New PHPCompatibility.Variables.ForbiddenThisUseContext sniff to detect most of the inconsistencies surrounding the use of the $this variable, which were removed in PHP 7.1. #762, #771. Fixes #262 and #740.
  • NewClasses: detection of more native PHP Exceptions. #743, #753
  • NewConstants : detection of the new PHP 7.3 Curl, Stream Crypto and LDAP constants and some more PHP 7.0 Tokenizer constants. #752, #767, #778
  • NewFunctions sniff: recognize (more) new LDAP functions as introduced in PHP 7.3. #768
  • NewFunctionParameters sniff: recognize the new $serverctrls parameter which was added to a number of LDAP functions in PHP 7.3. #769
  • NewIniDirectives sniff: recognize the new imap.enable_insecure_rsh ini directive as introduced in PHP 7.1.25, 7.2.13 and 7.3.0. #770
  • NewInterfaces sniff: recognize two more Session related interfaces which were introduced in PHP 5.5.1 and 7.0 respectively. #748
  • ⭐ Duplicate of upstream findStartOfStatement() method to the PHPCompatibility\PHPCSHelper class to allow for PHPCS cross-version usage of that method. #750

Changed

  • 📌 RemovedPHP4StyleConstructors: will now also detect PHP4-style constructors when declared in interfaces. #751
  • 📌 Sniff::validDirectScope(): the return value of this method has changed. Previously it would always be a boolean. It will stil return false when no valid direct scope has been found, but it will now return the stackPtr to the scope token if a valid direct scope was encountered. #758
  • NewOperators : updated the version number for T_COALESCE_EQUAL. #746
  • 📝 Minor improvement to an error message in the unit test suite. #742
  • ♻️ Various code clean-up and improvements. #745, #756, #774
  • ♻️ Various minor inline documentation fixes. #749, #757
  • ☔ Improved code coverage recording. #744, #776
  • 💚 Travis: build tests are now being run against PHP 7.3 as well. #511
    Note: full PHP 7.3 support is only available in combination with PHP_CodeSniffer 2.9.2 or 3.3.1+ due to an incompatibility within PHP_CodeSniffer itself.

Fixed

  • ✅ Compatibility with the upcoming release of PHPCS 3.4.0. Deal with changed behaviour of the PHPCS Tokenizer regarding binary type casts. #760
  • 🐛 InternalInterfaces: false negative for implemented/extended interfaces prefixed with a namespace separator. #775
  • 🐛 NewClasses: the introduction version of various native PHP Exceptions has been corrected. #743, #753
  • 🐛 NewInterfaces: false negative for implemented/extended interfaces prefixed with a namespace separator. #775
  • 🐛 RemovedPHP4StyleConstructors: the sniff would examine methods in nested anonymous classes as if they were methods of the higher level class. #751
  • RemovedPHP4StyleConstructors: the sniff will no longer throw false positives for the first method in an anonymous class when used in combination with PHPCS 2.3.x. #751
  • ReservedFunctionNames: fixed incorrect error message text for methods in anonymous classes when used in combination with PHPCS 2.3.x. #755
  • 🐛 ReservedFunctionNames: prevent duplicate errors being thrown for methods in nested anonymous classes. #755
  • 🐛 PHPCSHelper::findEndOfStatement(): minor bug fix. #749
  • 🐛 Sniff::isClassProperty(): class properties for classes nested in conditions or function calls were not always recognized as class properties. #758

Credits

Thanks go out to Jonathan Champ for his contribution to this version. 👏

Don't miss a new PHPCompatibility release

NewReleases is sending notifications on new releases.