diff --git a/README.md b/README.md index 6c2092f..04c4cfb 100644 --- a/README.md +++ b/README.md @@ -6,45 +6,51 @@ Convenience package to install all the external PHP_CodeSniffer rulesets which the [PHPCompatibility organisation](https://github.com/PHPCompatibility) maintains, in one go using Composer. +## Funding + +**This project needs funding.** + +The project team has spend thousands of hours creating and maintaining the PHPCompatibility packages. This is unsustainable without funding. + +If you use PHPCompatibility, please fund this work by setting up a monthly contribution to the [PHP_CodeSniffer Open Collective]. + + ## What's included in this package ? ### Base ruleset -* [![PHPCompatibility Current Version](https://img.shields.io/packagist/v/phpcompatibility/php-compatibility?label=stable)](https://packagist.org/packages/phpcompatibility/php-compatibility) [PHPCompatibility](https://github.com/PHPCompatibility/PHPCompatibility) - External PHP_CodeSniffer standard to check your codebase for PHP cross-version compatibility. +* [![PHPCompatibility Current Version](https://img.shields.io/packagist/v/phpcompatibility/php-compatibility?label=stable)](https://packagist.org/packages/phpcompatibility/php-compatibility) [PHPCompatibility] - External PHP_CodeSniffer standard to check your codebase for PHP cross-version compatibility. ### Framework/CMS specific rulesets -* [![PHPCompatibilityJoomla Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-joomla?label=stable)](https://packagist.org/packages/PHPCompatibility/phpcompatibility-joomla) [PHPCompatibilityJoomla](https://github.com/PHPCompatibility/PHPCompatibilityJoomla) - PHPCompatibility ruleset specific for Joomla projects. -* [![PHPCompatibilityWP Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-wp?label=stable)](https://packagist.org/packages/PHPCompatibility/phpcompatibility-wp) [PHPCompatibilityWP](https://github.com/PHPCompatibility/PHPCompatibilityWP) - PHPCompatibility ruleset specific for WordPress projects. +* [![PHPCompatibilityJoomla Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-joomla?label=stable)](https://packagist.org/packages/PHPCompatibility/phpcompatibility-joomla) [PHPCompatibilityJoomla] - PHPCompatibility ruleset specific for Joomla projects. +* [![PHPCompatibilityWP Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-wp?label=stable)](https://packagist.org/packages/PHPCompatibility/phpcompatibility-wp) [PHPCompatibilityWP] - PHPCompatibility ruleset specific for WordPress projects. ### Polyfill provider specific rulesets -* [![PHPCompatibilityPasswordCompat Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-passwordcompat?label=stable)](https://packagist.org/packages/phpcompatibility/phpcompatibility-passwordcompat) [PHPCompatibilityPasswordCompat](https://github.com/PHPCompatibility/PHPCompatibilityPasswordCompat) - PHPCompatibility ruleset specific for projects which use @ircmaxell's [`password_compat`](https://github.com/ircmaxell/password_compat) polyfill library. -* [![PHPCompatibilityParagonie Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-paragonie?label=stable)](https://packagist.org/packages/phpcompatibility/phpcompatibility-paragonie) [PHPCompatibilityParagonie](https://github.com/PHPCompatibility/PHPCompatibilityParagonie) - PHPCompatibility rulesets for projects using either the Paragonie [`random_compat`](https://github.com/paragonie/random_compat) or the Paragonie [`sodium_compat`](https://github.com/paragonie/sodium_compat) polyfill library, or both. -* [![PHPCompatibilitySymfony Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-symfony?label=stable)](https://packagist.org/packages/phpcompatibility/phpcompatibility-symfony) [PHPCompatibilitySymfony](https://github.com/PHPCompatibility/PHPCompatibilitySymfony) - PHPCompatibility rulesets for projects using any of the [PHP polyfill libraries](https://github.com/symfony?utf8=?&q=polyfill) provided by the Symfony project. - For more details about the available rulesets, please check out the [README of the PHPCompatibilitySymfony](https://github.com/PHPCompatibility/PHPCompatibilitySymfony/blob/master/README.md) repository. +* [![PHPCompatibilityPasswordCompat Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-passwordcompat?label=stable)](https://packagist.org/packages/phpcompatibility/phpcompatibility-passwordcompat) [PHPCompatibilityPasswordCompat] - PHPCompatibility ruleset specific for projects which use @ircmaxell's [`password_compat`] polyfill library. +* [![PHPCompatibilityParagonie Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-paragonie?label=stable)](https://packagist.org/packages/phpcompatibility/phpcompatibility-paragonie) [PHPCompatibilityParagonie] - PHPCompatibility rulesets for projects using either the Paragonie [`random_compat`] or the Paragonie [`sodium_compat`] polyfill library, or both. +* [![PHPCompatibilitySymfony Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-symfony?label=stable)](https://packagist.org/packages/phpcompatibility/phpcompatibility-symfony) [PHPCompatibilitySymfony] - PHPCompatibility rulesets for projects using any of the [PHP polyfill libraries] provided by the Symfony project. + For more details about the available rulesets, please check out the [README of the PHPCompatibilitySymfony][PHPCompatibilitySymfony-readme] repository. ## Requirements -* PHP 5.3+ for use with [PHP_CodeSniffer](https://github.com/PHPCSStandards/PHP_CodeSniffer) 2.3.0+. -* PHP 5.4+ for use with [PHP_CodeSniffer](https://github.com/PHPCSStandards/PHP_CodeSniffer) 3.0.2+. -* [Composer](https://getcomposer.org/) - -Use the latest stable release of PHP_CodeSniffer for the best results. -The minimum _recommended_ version of PHP_CodeSniffer is version 2.6.0. +* PHP > 5.4 +* [PHP_CodeSniffer] > 3.13.3. + Use the latest stable release of PHP_CodeSniffer for the best results. +* [Composer] ## Installation instructions -If you don't have a Composer plugin installed to manage the `installed_paths` setting for PHP_CodeSniffer, run the following from the command-line: -```bash -composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true -composer require --dev dealerdirect/phpcodesniffer-composer-installer:"^0.7" phpcompatibility/phpcompatibility-all:"*" -``` +The only supported installation method is via [Composer]. + +[Composer] will automatically install the project dependencies and register the external rulesets with PHP_CodeSniffer using the [Composer PHPCS plugin]. -If you already have a Composer PHP_CodeSniffer plugin installed, run: +Run the following from the root of your project: ```bash -composer require --dev phpcompatibility/phpcompatibility-all:"*" +composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true +composer require --dev phpcompatibility/phpcompatibility-all:"^2.0@dev" ``` Next, run: @@ -54,18 +60,29 @@ vendor/bin/phpcs -i If all went well, you will now see that the `PHPCompatibility`, `PHPCompatibilityJoomla`, `PHPCompatibilityWP` and a number of polyfill related standards are installed for PHP_CodeSniffer. +## Upgrade instructions + +To upgrade this package, run the following command: +```bash +composer update --dev phpcompatibility/phpcompatibility-all --with-dependencies +``` + +> [!TIP] +> If you have a _root_ requirement in your project for one of the packages used by this project, you may need to update with `--with-all-dependencies` instead. + + ## How to use -Now you can use any of the following commands to inspect your code: +You can now use any of the following commands to inspect your code: ```bash -./vendor/bin/phpcs -p . --standard=PHPCompatibility -./vendor/bin/phpcs -p . --standard=PHPCompatibilityJoomla -./vendor/bin/phpcs -p . --standard=PHPCompatibilityWP -./vendor/bin/phpcs -p . --standard=PHPCompatibilityPasswordCompat -./vendor/bin/phpcs -p . --standard=PHPCompatibilityParagonieRandomCompat -./vendor/bin/phpcs -p . --standard=PHPCompatibilityParagonieSodiumCompat -./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP54 -./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP73 +vendor/bin/phpcs -p . --standard=PHPCompatibility +vendor/bin/phpcs -p . --standard=PHPCompatibilityJoomla +vendor/bin/phpcs -p . --standard=PHPCompatibilityWP +vendor/bin/phpcs -p . --standard=PHPCompatibilityPasswordCompat +vendor/bin/phpcs -p . --standard=PHPCompatibilityParagonieRandomCompat +vendor/bin/phpcs -p . --standard=PHPCompatibilityParagonieSodiumCompat +vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP54 +vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP73 ...etc... # You can also combine the standards if your project uses several: @@ -83,24 +100,42 @@ To get the most out of the PHPCompatibility standards, you should specify a `tes For example: ```bash # For a Joomla project which should be compatible with PHP 5.3 up to and including PHP 7.0: -./vendor/bin/phpcs -p . --standard=PHPCompatibilityJoomla --runtime-set testVersion 5.3-7.0 +vendor/bin/phpcs -p . --standard=PHPCompatibilityJoomla --runtime-set testVersion 5.3-7.0 # For a project using both the Paragonie Sodium Compat polyfill, as well as the Symfony # PHP 7.1 polyfill and which should be compatible with PHP 5.4 and higher: vendor/bin/phpcs -p . --standard=PHPCompatibilityParagonieSodiumCompat,PHPCompatibilitySymfonyPolyfillPHP71 --runtime-set testVersion 5.4- ``` -For more detailed information, see the README of the main [PHPCompatibility](https://github.com/PHPCompatibility/PHPCompatibility#sniffing-your-code-for-compatibility-with-specific-php-versions) standard. +For more detailed information, see the README of the main [PHPCompatibility][PHPCompatibility-testVersion] standard. ### Testing PHP files only By default PHP_CodeSniffer will analyse PHP, JavaScript and CSS files. As the PHPCompatibility sniffs only target PHP code, you can make the run slightly faster by telling PHP_CodeSniffer to only check PHP files, like so: ```bash -./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP56 --extensions=php --runtime-set testVersion 5.3- +vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP56 --extensions=php --runtime-set testVersion 5.3- ``` ## License All code within the PHPCompatibility organisation is released under the GNU Lesser General Public License (LGPL). For more information, visit . + + +[Composer]: https://getcomposer.org/ +[Composer PHPCS plugin]: https://github.com/PHPCSStandards/composer-installer/ +[PHP_CodeSniffer]: https://github.com/PHPCSStandards/PHP_CodeSniffer +[PHP_CodeSniffer Open Collective]: https://opencollective.com/php_codesniffer +[PHPCompatibility]: https://github.com/PHPCompatibility/PHPCompatibility +[PHPCompatibility-testVersion]: https://github.com/PHPCompatibility/PHPCompatibility#sniffing-your-code-for-compatibility-with-specific-php-versions +[PHPCompatibilityParagonie]: https://github.com/PHPCompatibility/PHPCompatibilityParagonie +[PHPCompatibilityPasswordCompat]: https://github.com/PHPCompatibility/PHPCompatibilityPasswordCompat +[PHPCompatibilitySymfony]: https://github.com/PHPCompatibility/PHPCompatibilitySymfony +[PHPCompatibilityJoomla]: https://github.com/PHPCompatibility/PHPCompatibilityJoomla +[PHPCompatibilityWP]: https://github.com/PHPCompatibility/PHPCompatibilityWP +[`password_compat`]: https://github.com/ircmaxell/password_compat +[`random_compat`]: https://github.com/paragonie/random_compat +[`sodium_compat`]: https://github.com/paragonie/sodium_compat +[PHP polyfill libraries]: https://github.com/symfony?utf8=?&q=polyfill +[PHPCompatibilitySymfony-readme]: https://github.com/PHPCompatibility/PHPCompatibilitySymfony/blob/master/README.md diff --git a/composer.json b/composer.json index 991fb52..7f4f73b 100644 --- a/composer.json +++ b/composer.json @@ -19,19 +19,18 @@ "security": "https://github.com/PHPCompatibility/PHPCompatibilityAll/security/policy" }, "require" : { - "phpcompatibility/php-compatibility" : "*", - "phpcompatibility/phpcompatibility-wp" : "*", - "phpcompatibility/phpcompatibility-joomla" : "*", - "phpcompatibility/phpcompatibility-paragonie" : "*", - "phpcompatibility/phpcompatibility-passwordcompat" : "*", - "phpcompatibility/phpcompatibility-symfony" : "*" - }, - "suggest" : { - "dealerdirect/phpcodesniffer-composer-installer": "^1.0 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", - "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + "phpcompatibility/php-compatibility" : "^10.0.0@dev", + "phpcompatibility/phpcompatibility-wp" : "^3.0.0@dev", + "phpcompatibility/phpcompatibility-joomla" : "^3.0.0@dev", + "phpcompatibility/phpcompatibility-paragonie" : "^2.0.0@dev", + "phpcompatibility/phpcompatibility-passwordcompat" : "^2.0.0@dev", + "phpcompatibility/phpcompatibility-symfony" : "^2.0.0@dev" }, "prefer-stable": true, "config": { + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + }, "lock": false } }