rfc:autovivification_false
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
rfc:autovivification_false [2021/05/25 17:14] – Explained error messages dharman | rfc:autovivification_false [2021/07/20 16:42] (current) – Implemented dharman | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== PHP RFC: Disable | + | ====== PHP RFC: Deprecate |
* Date: 2021-05-25 | * Date: 2021-05-25 | ||
* Author: Kamil Tekiela < | * Author: Kamil Tekiela < | ||
- | * Status: | + | * Status: |
- | * Target Version: PHP 8.1 | + | * Implementation: https:// |
===== Introduction ===== | ===== Introduction ===== | ||
- | PHP natively allows for [[https:// | + | PHP natively allows for [[https:// |
<PHP> | <PHP> | ||
+ | // From undefined | ||
+ | $arr[] = 'some value'; | ||
+ | $arr[' | ||
+ | // From false | ||
$arr = false; | $arr = false; | ||
+ | $arr[] = 2; | ||
+ | // From null | ||
+ | $arr = null; | ||
$arr[] = 2; | $arr[] = 2; | ||
</ | </ | ||
Line 18: | Line 25: | ||
===== Proposal ===== | ===== Proposal ===== | ||
- | The proposal is to disallow autovivification from %%false%% values. We will continue to allow autovivification from undefined | + | The proposal is to disallow autovivification from %%false%% values. We will continue to allow autovivification from undefined |
> Cannot use a scalar value as an array | > Cannot use a scalar value as an array | ||
+ | |||
+ | In PHP 8.1, appending to a variable of type false will display a deprecation notice. For example: | ||
+ | |||
+ | > Deprecated: Automatic conversion of false to array is deprecated in | ||
+ | |||
+ | In PHP 9.0, this will throw a fatal error, the same as for other scalar types. | ||
===== Rationale ===== | ===== Rationale ===== | ||
Line 33: | Line 46: | ||
</ | </ | ||
- | Throwing an error in such cases could save developers from common bugs in their code. On the other hand, this could also be considered useful by some developers. The rationale here is that the behaviour is inconsistent. Neither true, 0, nor "" | + | Throwing an error in such cases could save developers from common bugs in their code. On the other hand, this feature |
+ | |||
+ | Allowing autovivification on %%null%% can be a sign of a buggy code, but it is less of a problem than %%false%%. In PHP, %%null%% and undefined are very similar and often treated the same way, e.g. %%isset()%% and %%??%%. | ||
===== Backward Incompatible Changes ===== | ===== Backward Incompatible Changes ===== | ||
- | Every single usage autovivification on false values | + | Every single usage autovivification on false will throw a deprecation error in PHP 8.1 and throw a fatal error in PHP 9.0. |
===== Vote ===== | ===== Vote ===== | ||
- | Yes/No. | + | Should we deprecate autovivification from false? |
+ | |||
+ | Started: 2021-06-09T20: | ||
+ | Ends: 2021-06-23T20: | ||
+ | |||
+ | <doodle title=" | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ===== Discussion on internals ====== | ||
+ | |||
+ | https:// |
rfc/autovivification_false.1621962842.txt.gz · Last modified: 2021/05/25 17:14 by dharman