=== Bumpcheck - PHP Upgrade Scanner ===
Contributors: jolovicdev
Tags: php, compatibility, php 8, upgrade, deprecated
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Check every plugin and theme against PHP 8.0 to 8.6 before your host upgrades. Scans the files on your own server.

== Description ==

Your host is moving your site to a newer PHP version. Bumpcheck tells you which plugins and themes would stop working, before the switch.

Pick a PHP version from 8.0 to 8.6 and run the scan. Each plugin and theme gets one of three results:

* **Breaks**: it calls something that the chosen PHP version removed. The page shows the file, the line and what to use instead.
* **Works, uses deprecated code**: it runs, but PHP will log deprecation notices.
* **Ready**: nothing found.

= What makes it different =

* **It reads the files on your server.** Premium plugins, custom plugins and your own theme are checked like everything else.
* **Nothing leaves your site.** No account, no outside service, no data sent.
* **It covers PHP 8.0, 8.1, 8.2, 8.3, 8.4, 8.5 and 8.6.**
* **It does not time out.** The scan runs in short steps. In our test, 21,000 files took 13 seconds.
* **It knows about old fallback code.** Many plugins keep a branch for ancient PHP versions that never runs on your site. Those lines are listed apart and do not count against the plugin.

= What it checks =

Removed and deprecated functions, constants and INI settings. Array offsets with curly braces. The `(unset)` and `(real)` casts. Constructors named after their class. `"${var}"` in strings. Missing return types on `ArrayAccess`, `Iterator`, `Countable` and `JsonSerializable` methods. `Serializable` without `__serialize()`. Parameters that are nullable only through a null default. Required parameters after optional ones. `get_class()` without an argument. A third argument to `define()`. Deprecated `mb_convert_encoding()` encodings.

= What it cannot check =

The scan reads code and does not run it. Problems that depend on values at run time are out of reach, for example passing `null` to a function that needs a string, or properties created on the fly (deprecated in PHP 8.2). A clean result means nothing known was found. Test on a staging copy before you switch a busy site.

= Bumpcheck Pro =

A separate add-on adds a weekly or daily scan with the result by email, CSV and JSON export, and a WP-CLI command. Details and price: [getbumpcheck.com](https://getbumpcheck.com/#pro).

== Frequently Asked Questions ==

= Does it change anything on my site? =

No. It reads files and stores the result of the last scan. Deleting the plugin removes that result.

= Does it check WordPress itself? =

No. WordPress core supports the PHP versions listed on wordpress.org. Bumpcheck checks what you added: plugins, must-use plugins and themes.

= A plugin shows "already true on my PHP version". What does that mean? =

The code uses something that was removed in a PHP version you already run. If that code ran, it would fail today. It is almost always an old fallback branch, so it does not count as a result of the upgrade.

= Is a "Ready" result a guarantee? =

No. See "What it cannot check".

== Screenshots ==

1. A scan against PHP 8.4 on a site running PHP 7.4. Each breaking line shows the file, the line number and what to use instead.
2. A plugin that only uses deprecated code. Code that already fails on the current PHP version is listed apart and does not count.

== Changelog ==

= 1.0.0 =
* First release.
