rfc:deprecations_php_7_3
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
rfc:deprecations_php_7_3 [2017/10/27 11:22] – nikic | rfc:deprecations_php_7_3 [2018/07/08 21:07] – Remove FILTER_SANITIZE_MAGIC_QUOTES (now in 7.4) nikic | ||
---|---|---|---|
Line 2: | Line 2: | ||
* Date: 2017-08-02 | * Date: 2017-08-02 | ||
* Author: Nikita Popov < | * Author: Nikita Popov < | ||
- | * Status: | + | * Status: |
+ | * Implementation: | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | This is a draft RFC for multiple deprecations targeting PHP 7.3. The RFC proposes to deprecate the listed functionality in PHP 7.3 and remove it no later than in PHP 8.0. | + | This is a draft RFC for multiple deprecations targeting PHP 7.3. The RFC proposes to deprecate the listed functionality in PHP 7.3 and remove it in PHP 8. |
The following list provides a short overview of the functionality targeted for deprecation, | The following list provides a short overview of the functionality targeted for deprecation, | ||
- | * TODO | + | * Undocumented mbstring function aliases |
+ | * String search functions with integer needle | ||
+ | * '' | ||
+ | * Defining a free-standing '' | ||
+ | * '' | ||
+ | * '' | ||
===== Proposal ===== | ===== Proposal ===== | ||
Each feature proposed for deprecation is voted separately. Each vote requires a 2/3 majority, independently of whether it is a language or standard library change. All votes refer to deprecation in PHP 7.3 and removal in the next major version (presumably PHP 8.0). | Each feature proposed for deprecation is voted separately. Each vote requires a 2/3 majority, independently of whether it is a language or standard library change. All votes refer to deprecation in PHP 7.3 and removal in the next major version (presumably PHP 8.0). | ||
- | |||
- | ==== WDDX extension ==== | ||
- | |||
- | Previous discussions: | ||
- | |||
- | TODO | ||
==== Undocumented mbstring function aliases ==== | ==== Undocumented mbstring function aliases ==== | ||
Line 27: | Line 27: | ||
Proposed action: Mark the functions as deprecated, so that a deprecation notice is emitted on every call. In PHP 8 these aliases will be removed. | Proposed action: Mark the functions as deprecated, so that a deprecation notice is emitted on every call. In PHP 8 these aliases will be removed. | ||
- | |||
- | ==== mb_detect_encoding() without strict mode ==== | ||
- | |||
- | TODO | ||
- | |||
- | ==== strip_tags() and fgetss() functions ==== | ||
- | |||
- | TODO | ||
- | |||
- | From some preliminary feedback: We might want to only deprecate the insecure allowed_tags parameter, but keep the "strip all tags" functionality. This function appears to be useful as a relatively simple way of reusing code that outputs HTML in a different context (CLI output, text messages, etc.) | ||
==== String search functions with integer needle ==== | ==== String search functions with integer needle ==== | ||
Line 54: | Line 44: | ||
Proposed action: Throw a deprecation warning if a non-string is passed as a needle to '' | Proposed action: Throw a deprecation warning if a non-string is passed as a needle to '' | ||
- | ==== Continue acting on switch | + | ==== fgetss() function and string.strip_tags filter |
- | In PHP an argument-less | + | The '' |
- | We cannot change these semantics for reasons of backwards-compatibility (and arguably wouldn't want to anyway), but we can remove this particular gotcha by disallowing the application of '' | + | Proposed action: Mark '' |
- | In the following some examples are provided to illustrate invalid usages and what they should be replaced with. | + | ==== Defining a free-standing assert() function ==== |
- | <code php> | + | Since PHP 7.0 the '' |
- | switch | + | |
- | case " | + | |
- | continue; | + | |
- | break; | + | |
- | } | + | |
- | while ($foo) { | + | To avoid confusion due to this behavior, it is suggested to forbid the definition of free-standing '' |
- | switch ($bar) { | + | |
- | case " | + | |
- | continue; | + | |
- | continue 2; // or | + | |
- | break; | + | |
- | } | + | |
- | } | + | |
- | while ($foo) { | + | Proposed action: Generate a compile-time deprecation warning if an '' |
- | switch ($bar) { | + | |
- | case " | + | |
- | while ($xyz) { | + | |
- | continue 2; // INVALID. Replace with one of: | + | |
- | continue 3; | + | |
- | break 2; | + | |
- | } | + | |
- | } | + | |
- | } | + | |
- | </ | + | |
- | Proposed action: Throw a deprecation warning from the compiler if a '' | + | ==== FILTER_FLAG_SCHEME_REQUIRED and FILTER_FLAG_HOST_REQUIRED ==== |
- | ==== Case-insensitive | + | As of PHP 5.2.1 '' |
- | Previous discussion: https:// | + | Proposed action: Generate a deprecation warning if the '' |
- | TODO (cmb does not want to pursue this, so I will) | + | Implementation: |
- | ==== Defining a free-standing assert() function | + | ==== pdo_odbc.db2_instance_name php.ini directive |
+ | |||
+ | As of PHP 5.1.1 '' | ||
+ | |||
+ | The side effect here is that this setting is process wide and also affects the ODBC extension, which can create some hard to debug situations. Besides this, the PECL package, ibm_db2 seems to implement the exact same behavior which could also conflict. | ||
- | Interacts badly with zend.assertions. | + | Proposed action: Add a deprecation notice if the ini directive has a value at module initialization. |
- | TODO | + | Implementations: |
===== Backward Incompatible Changes ===== | ===== Backward Incompatible Changes ===== | ||
Line 108: | Line 80: | ||
For PHP 7.3 additional deprecation notices will appear. For PHP 8.0 the previously deprecated functionality will no longer be available. | For PHP 7.3 additional deprecation notices will appear. For PHP 8.0 the previously deprecated functionality will no longer be available. | ||
- | ===== Proposed Voting Choices | + | ===== Vote ===== |
Each of the bullet points above will get a separate vote. All votes will require a 2/3 supermajority, | Each of the bullet points above will get a separate vote. All votes will require a 2/3 supermajority, | ||
- | |||
- | ===== Patches and Tests ===== | ||
- | |||
- | The patches for these deprecations are for the most part trivial, as such they will be provided once the RFC is accepted (or portions of it). |
rfc/deprecations_php_7_3.txt · Last modified: 2018/07/21 21:50 by nikic