-
-
Notifications
You must be signed in to change notification settings - Fork 205
Description
As discussed in a call today.
Related #150, #207, #509, #582
Problem outline
A PHP extension can offer various functionality:
- Classes, including class methods, class constants etc
- Interfaces
- (Global) Functions
- (Global) Constants
- Ini directives
The existing RemovedExtensions sniff checks for use of removed extensions, but is:
- incomplete
The sniff basically only checks for function calls, it does not check for the use of classes, constants or ini directives. - imprecise
The function call check is prefix based and doesn't check the prefix with enough precision leading to false positives.
On top of that, there are three other, related sniffs which also cover removed functionality:
RemovedConstantsRemovedIniDirectivesRemovedFunctions
PHPCompatibility currently does not contain a RemovedClasses or a RemovedInterfaces sniff, but those can (and should) be added, if necessary.
Solution to be implemented
After discussing this at length, we have decided to solve this as follows:
- For those extensions where the details about functions/constants/etc can be verified, it will be verified that the functions/constants etc are listed in the sniffs addressing the individual features and that those lists are complete.
- The list entries in the individual sniffs will get an extra array key
extensionwith the name of the PHP Extension as removed. - A
RemovedExtensionsTraitwill be created which lists the names of the fully verified extensions, the version in which the extension was removed and a possible alternative.
The trait will contain a function to adjust the error message of a sniff.
Thistraitwill then be used by the sniffs addressing individual features to add information to the error message about the extension being completely removed from PHP and what alternative is available (if any). - The entry for a fully verified extension will be removed from the list in the
RemovedExtensionssniff when it is moved to the trait. - For those extensions where the details about functions/constants/etc can no longer be found, the sniff will remain.
Prerequisites
For each and every extension which has been removed, it needs to be verified that the RemovedConstants, RemovedIniDirectives, RemovedFunctions and potential RemovedClasses and RemovedInterfaces sniffs cover all parts of the extension.
The below is an action list for this verification.
Please either edit this issue or leave a comment when starting on the verification of an extension to prevent duplicate work). Checkboxes should be checked off when that part of an extension has been fully verified.
Work for this issue will be done in the (dirty) https://github.com/PHPCompatibility/PHPCompatibility/tree/WIP/feature/207-509-582-removed-extension-recognition-precision branch, which will be cleaned up before it is pulled once the work is complete.
Sources which can be used to find the needed information:
- activescript
- Ini directives complete &
extensionindex added - Constants complete &
extensionindex added - Interfaces complete &
extensionindex added - Classes complete &
extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- cpdf (PHP 5.1) - @jrfnl
-
Ini directives complete &extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- crack (PHP 5.0) - @jrfnl
- Ini directives complete &
extensionindex added -
Constants complete &extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- dbase (PHP 5.3) - @wimg
-
Ini directives complete &extensionindex added -
Constants complete &extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- dbx (PHP 5.1) - @wimg
- Ini directives complete &
extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- dio (PHP 5.1) - @jrfnl
-
Ini directives complete &extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- ereg (PHP 7.0) - @jrfnl
-
Ini directives complete &extensionindex added -
Constants complete &extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- fam (PHP 5.1) - @jrfnl
-
Ini directives complete &extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- fbsql (PHP 5.3) - @wimg
- Ini directives complete &
extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- fdf (PHP 5.3) - @jrfnl
-
Ini directives complete &extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- filepro (PHP 5.2) - @wimg
-
Ini directives complete &extensionindex added -
Constants complete &extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- hw_api (PHP 5.2) - @jrfnl
- Ini directives complete &
extensionindex added -
Constants complete &extensionindex added -
Interfaces complete &extensionindex added - Classes complete &
extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- ibase (PHP 7.4) - @jrfnl
- Ini directives complete &
extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- ifx (PHP 5.2.1) - @jrfnl
- Ini directives complete &
extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- ingres (PHP 5.1) - @wimg
- Ini directives complete &
extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- ircg (PHP 5.1) - @jrfnl
-
Ini directives complete &extensionindex added -
Constants complete &extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- mcrypt (PHP 7.2) - @jrfnl
- Ini directives complete &
extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- mcve (PHP 5.1) - @jrfnl
-
Ini directives complete &extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- mimetype (PHP 5.3) - @jrfnl
- Ini directives complete &
extensionindex added -
Constants complete &extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- ming (PHP 5.3) - @jrfnl
-
Ini directives complete &extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added - Classes complete &
extensionindex added - Functions complete &
extensionindex added
-
- mnogosearch (PHP 5.1) - @jrfnl
-
Ini directives complete &extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- msession (PHP 5.1.3) - @jrfnl
-
Ini directives complete &extensionindex added -
Constants complete &extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- msql (PHP 5.3) - @wimg
- Ini directives complete &
extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- mssql (PHP 7.0) - @wimg
- Ini directives complete &
extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- mysql (PHP 7.0) - @wimg & @jrfnl
- Ini directives complete &
extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- ncurses (PHP 5.3) - @jrfnl
-
Ini directives complete &extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- oracle (PHP 5.1) - @wimg
-
Ini directives complete &extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- ovrimos (PHP 5.1) - @wimg & @jrfnl
-
Ini directives complete &extensionindex added -
Constants complete &extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- pfpro (PHP 5.1) - @jrfnl
- Ini directives complete &
extensionindex added -
Constants complete &extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- recode (PHP 7.4) - @jrfnl
-
Ini directives complete &extensionindex added -
Constants complete &extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- sqlite (PHP 5.4) - @wimg
- Ini directives complete &
extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added - Classes complete &
extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- sybase_ct (PHP 7.0) - @wimg
- Ini directives complete &
extensionindex added -
Constants complete &extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- sybase (PHP 5.3) - @wimg
- Ini directives complete &
extensionindex added -
Constants complete &extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
- Ini directives complete &
- w32api (PHP 5.1) - @jrfnl
-
Ini directives complete &extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- wddx (PHP 7.4) - @jrfnl
-
Ini directives complete &extensionindex added -
Constants complete &extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-
- yp (PHP 5.1) - @jrfnl
-
Ini directives complete &extensionindex added - Constants complete &
extensionindex added -
Interfaces complete &extensionindex added -
Classes complete &extensionindex added - Functions complete &
extensionindex added
-