rfc:invalid_strings_in_arithmetic

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rfc:invalid_strings_in_arithmetic [2016/03/21 11:22] – fix opcache wording ajfrfc:invalid_strings_in_arithmetic [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 3: Line 3:
   * Date: 2016-01-08   * Date: 2016-01-08
   * Author: Andrea Faulds, ajf@ajf.me   * Author: Andrea Faulds, ajf@ajf.me
-  * Status: In Voting+  * Status: Implemented (PHP 7.1)
   * First Published at: http://wiki.php.net/rfc/invalid_strings_in_arithmetic   * First Published at: http://wiki.php.net/rfc/invalid_strings_in_arithmetic
  
Line 68: Line 68:
 This inconsistency is unintuitive, and becomes a greater problem if we add warnings and notices for non-numeric strings, as some operators would tell you strings like ''"1.2345e9"'' and ''"-123.45"'' are non-well-formed, whereas other operators would happily accept such strings. This inconsistency is unintuitive, and becomes a greater problem if we add warnings and notices for non-numeric strings, as some operators would tell you strings like ''"1.2345e9"'' and ''"-123.45"'' are non-well-formed, whereas other operators would happily accept such strings.
  
-To avoid this problem, this RFC proposes use ''is_numeric_string_ex'' instead of ''strtol'' for the integer operators and integer casts (<php>intval()</php> with <php>$base</php> = 10, <php>(int)</php>, <php>settype()</php>, etc.), resolving the inconsistency. This also affects the Zend Engine C functions ''zval_get_long'' and ''convert_to_long'', and so PHP functions which uses these internal functions are also affected, including <php>decbin()</php>, <php>decoct()</php> and <php>dechex()</php>.+To avoid this problem, this RFC proposes to use ''is_numeric_string_ex'' instead of ''strtol'' for the integer operators and integer casts (<php>intval()</php> with <php>$base</php> = 10, <php>(int)</php>, <php>settype()</php>, etc.), resolving the inconsistency. This also affects the Zend Engine C functions ''zval_get_long'' and ''convert_to_long'', and so PHP functions which uses these internal functions are also affected, including <php>decbin()</php>, <php>decoct()</php> and <php>dechex()</php>.
  
 ===== Backward Incompatible Changes ===== ===== Backward Incompatible Changes =====
Line 130: Line 130:
 As this is a language change, the RFC requires a 2/3 majority to pass. As this is a language change, the RFC requires a 2/3 majority to pass.
  
-Voting started on 2016-03-20 and will end on 2016-03-28.+Voting started on 2016-03-20 and ended on 2016-03-28.
  
-<doodle title="Accept the ‘Warn about invalid strings in arithmetic’ v1.1 RFC for PHP 7.1?" auth="ajf" voteType="single" closed="false">+<doodle title="Accept the ‘Warn about invalid strings in arithmetic’ v1.1 RFC for PHP 7.1?" auth="ajf" voteType="single" closed="true">
    * Yes    * Yes
    * No    * No
Line 145: Line 145:
  
 ===== Implementation ===== ===== Implementation =====
-After the project is implemented, this section should contain  + 
-  - the version(s) it was merged to +The interpreter patch was merged into 7.1 here: https://github.com/php/php-src/commit/1e82ad8038d3100b7e27be870652c1f639a7200a 
-  a link to the git commit(s) + 
-  a link to the PHP manual entry for the feature+The UPGRADING file notes can be found here (more extensive than in the previously-linked patch), see sections 1 and 2: https://github.com/php/php-src/blob/0105bd20b706c8ab5b0a71f59f11a9dabe735f6b/UPGRADING 
 + 
 +The corresponding mention in the manual can be found here: http://php.net/manual/en/migration71.other-changes.php 
 + 
 +The language specification patch was merged into 7.1 here: https://github.com/php/php-langspec/commit/a3ea4e992f43ea9083c3fe3738a5ded03412f6e1
  
 ===== References ===== ===== References =====
rfc/invalid_strings_in_arithmetic.1458559364.txt.gz · Last modified: 2017/09/22 13:28 (external edit)