rfc:deprecations_php_7_3
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
rfc:deprecations_php_7_3 [2017/08/29 09:03] – nikic | rfc:deprecations_php_7_3 [2018/07/21 21:50] (current) – Implemented nikic | ||
---|---|---|---|
Line 2: | Line 2: | ||
* Date: 2017-08-02 | * Date: 2017-08-02 | ||
* Author: Nikita Popov < | * Author: Nikita Popov < | ||
- | * Status: | + | * Status: |
+ | * Implementation: | ||
+ | * Discussion: https:// | ||
===== 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, | ||
* Undocumented mbstring function aliases | * Undocumented mbstring function aliases | ||
- | * '' | + | |
- | * '' | + | |
+ | * 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). The votes close on 2018-07-16. |
==== Undocumented mbstring function aliases ==== | ==== Undocumented mbstring function aliases ==== | ||
Line 22: | Line 27: | ||
The functions '' | The functions '' | ||
- | Proposed action: Mark the functions as deprecated, so that a deprecation notice is emitted on every call. | + | 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 ==== | + | <doodle title=" |
+ | * Yes | ||
+ | * No | ||
+ | </ | ||
- | TODO | + | ==== String search functions with integer needle ==== |
- | ==== strip_tags() | + | The following applies to the '' |
- | TODO | + | String search functions usually operate on a string needle. However, if a non-string is passed, it will be converted to an integer and interpreted as an ASCII codepoint: |
- | From some preliminary feedback: We might want to only deprecate the insecure allowed_tags parameter, but keep the "strip all tags" | + | <code php> |
+ | $str = "There are 10 apples"; | ||
+ | var_dump(strpos($str, "10")); // int(10) | ||
+ | var_dump(strpos($str, 10)); // bool(false) | ||
+ | </ | ||
- | ==== strpos() with integer | + | In a language that relies on transparent type juggling between scalar types, this is problemantic, |
- | TODO | + | Proposed action: Throw a deprecation warning if a non-string is passed as a needle to '' |
- | ==== Argument-less continue inside switch ==== | + | <doodle title=" |
+ | * Yes | ||
+ | * No | ||
+ | </ | ||
- | TODO | + | ==== fgetss() function and string.strip_tags filter ==== |
- | (Confusing behavior for people coming from other languages, most likely mean "continue | + | The '' |
+ | |||
+ | Proposed action: Mark '' | ||
+ | |||
+ | <doodle title="Deprecate (and subsequently remove) fgetss() (and variations) and the string.strip_tags filter?" | ||
+ | * Yes | ||
+ | * No | ||
+ | </ | ||
+ | |||
+ | ==== Defining a free-standing assert() function ==== | ||
+ | |||
+ | Since PHP 7.0 the '' | ||
+ | |||
+ | To avoid confusion due to this behavior, it is suggested to forbid the definition of free-standing '' | ||
+ | |||
+ | Proposed action: Generate a compile-time deprecation warning if an '' | ||
+ | |||
+ | <doodle title=" | ||
+ | * Yes | ||
+ | * No | ||
+ | </ | ||
+ | |||
+ | ==== FILTER_FLAG_SCHEME_REQUIRED and FILTER_FLAG_HOST_REQUIRED ==== | ||
+ | |||
+ | As of PHP 5.2.1 '' | ||
+ | |||
+ | Proposed action: Generate a deprecation warning if the '' | ||
+ | |||
+ | Implementation: | ||
+ | |||
+ | <doodle title="Deprecate (and subsequently remove) FILTER_FLAG_(SCHEME|HOST)_REQUIRED flags?" | ||
+ | * Yes | ||
+ | * No | ||
+ | </ | ||
+ | |||
+ | ==== 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. | ||
+ | |||
+ | Proposed action: Add a deprecation notice if the ini directive has a value at module initialization. | ||
+ | |||
+ | Implementations: | ||
+ | |||
+ | <doodle title=" | ||
+ | * Yes | ||
+ | * No | ||
+ | </ | ||
===== Backward Incompatible Changes ===== | ===== Backward Incompatible Changes ===== | ||
Line 51: | Line 114: | ||
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