rfc:notice-for-non-valid-array-container
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
rfc:notice-for-non-valid-array-container [2016/08/15 15:04] – bp1222 | rfc:notice-for-non-valid-array-container [2019/07/10 12:20] (current) – Implemented nikic | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== PHP RFC: E_WARNING for invalid container read array-access ====== | ====== PHP RFC: E_WARNING for invalid container read array-access ====== | ||
- | * Version: | + | * Version: |
- | * Date: 2016-08-10 | + | * Date: 2016-08-16 |
* Author: David Walker (dave@mudsite.com) | * Author: David Walker (dave@mudsite.com) | ||
- | * Status: | + | * Status: |
* First Published at: http:// | * First Published at: http:// | ||
Line 27: | Line 27: | ||
// Output would be: | // Output would be: | ||
// Warning: Variable of type integer does not accept array offsets | // Warning: Variable of type integer does not accept array offsets | ||
+ | |||
+ | // Brought up during vote: | ||
+ | $a = [null]; | ||
+ | $c = null; | ||
+ | var_dump($a[0][0] + $c[0]); | ||
+ | // For the same reason as above, $a[0] is rightfully NULL | ||
+ | // and accessing [0] on null is invalid. | ||
+ | // would be $c[0] for the same reason. | ||
+ | // Output: | ||
+ | // int(0) | ||
</ | </ | ||
Line 35: | Line 45: | ||
This RFC aims to limit the quantity of warnings on a single line, however, large projects may have many locations that might need variable type checking around unknown container access. | This RFC aims to limit the quantity of warnings on a single line, however, large projects may have many locations that might need variable type checking around unknown container access. | ||
+ | |||
+ | ===== Performance Impact ===== | ||
+ | Test run was: | ||
+ | <file php> | ||
+ | <?php | ||
+ | $a = false; | ||
+ | for ($i = 0; $i < 1000000; $i++) { | ||
+ | $a[0]; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Execution Time (DualCore 3ghz; 2g ram) | ||
+ | * Current Master : ~0.09s (~489m operations) | ||
+ | * Current Master w/RFC Displaying Warnings: ~33.25s (~7.799b operations) | ||
+ | * Current Master w/RFC Hiding Warnings: ~0.82s (~4.091b operations) | ||
+ | |||
+ | We can see there is a significant increase in operations on huge loads. | ||
===== Proposed PHP Version(s) ===== | ===== Proposed PHP Version(s) ===== | ||
Line 66: | Line 93: | ||
* '' | * '' | ||
- | Per discussion on the [[https:// | + | Per discussion on the [[https:// |
==== Reference Assignment Access ==== | ==== Reference Assignment Access ==== | ||
Line 88: | Line 115: | ||
===== Proposed Voting Choices ===== | ===== Proposed Voting Choices ===== | ||
- | No syntax is changed, a vote of 50%+1 will be necessary | + | Requires 2/3 Vote |
<doodle title=" | <doodle title=" | ||
* Yes | * Yes | ||
* No | * No | ||
</ | </ | ||
+ | Vote Start: 2016-08-16 15:36 | ||
+ | |||
+ | Vote End: | ||
===== Patches and Tests ===== | ===== Patches and Tests ===== |
rfc/notice-for-non-valid-array-container.1471273442.txt.gz · Last modified: 2017/09/22 13:28 (external edit)