rfc:normalize_inc_dec

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:normalize_inc_dec [2013/12/19 09:49] datibbawrfc:normalize_inc_dec [2018/06/18 10:17] (current) – This RFC appears to be inactive cmb
Line 1: Line 1:
  
-====== PHP RFC: Your Title Here ====== +====== PHP RFC: Normalize increment and decrement operators ====== 
-  * Version: 0.1+  * Version: 0.2
   * Date: 2013-12-19   * Date: 2013-12-19
-  * Author:  +  * Author: Tjerk Meesters (datibbaw) 
-  * Status: Draft+  * Status: Inactive
   * First Published at: https://wiki.php.net/rfc/normalize_inc_dec   * First Published at: https://wiki.php.net/rfc/normalize_inc_dec
  
 ===== Introduction ===== ===== Introduction =====
  
-This proposal aims to make the current behaviour more intuitive:+The current behaviour of increment and decrement operators is not very intuitive:
  
 <code php> <code php>
Line 18: Line 18:
 // null values // null values
 $a = null; --$a; // null $a = null; --$a; // null
 +$a = null; ++$a; // int(1)
  
 // empty strings // empty strings
Line 30: Line 31:
 ===== Proposal ===== ===== Proposal =====
  
-The following behaviour is being proposed:+The proposal is: 
 +  - always treat boolean and null types as an integer, but raise a warning. 
 +  - deprecate alphanumeric increment and introduce ''str_inc()'' and ''str_dec()''
 + 
 +==== Operation on bool / null ====
  
 <code php> <code php>
 // booleans // booleans
-$a = false; ++$a; // int(1) +$a = false;  
-$a = true; --$a; // int(0)+++$a; // int(1) + warning 
 +++$a; // int(2
 +$a = true;  
 +--$a; // int(0) + warning 
 +--$a; // int(-1)
  
 // null values // null values
-$a = null; --$a; // int(-1)+$a = null; --$a; // int(-1) + warning 
 +$a = null; ++$a; // int(1) + warning 
 +</code>
  
-// empty strings +==== Operation on alphanumeric strings ====
-$a ''; ++$a; // int(1)+
  
 +<code php>
 // non-numeric strings // non-numeric strings
 $a = '12d9';  $a = '12d9'; 
Line 48: Line 59:
 ++$a; // float(13) ++$a; // float(13)
 </code> </code>
 +
 +Additionally, it makes two new string functions available:
 +
 +  * ''str_inc($str)'' - to perform the current string increments.
 +  * ''str_dec($str)'' - the string decrement.
  
 ===== Backward Incompatible Changes ===== ===== Backward Incompatible Changes =====
  
-What breaks, and what is the justification for it?+Incrementing ''null'' will now raise a warning; incrementing alphanumeric strings will raise a deprecation notice.
  
 ===== Proposed PHP Version(s) ===== ===== Proposed PHP Version(s) =====
  
-List the proposed PHP versions that the feature will be included in.  Use relative versions such as "next PHP 5.x" or "next PHP 5.x.y"+**PHP 7**
- +
-===== SAPIs Impacted ===== +
- +
-Describe the impact to CLI, Development web server, embedded PHP etc. +
- +
-===== Impact to Existing Extensions ===== +
- +
-Will existing extensions be affected? +
- +
-===== New Constants ===== +
- +
-Describe any new constants so they can be accurately and comprehensively explained in the PHP documentation. +
- +
-===== php.ini Defaults ===== +
- +
-If there are any php.ini settings then list: +
-  * hardcoded default values +
-  php.ini-development values +
-  php.ini-production values+
  
 ===== Open Issues ===== ===== Open Issues =====
  
-Make sure there are no open issues when the vote starts!+None.
  
 ===== Unaffected PHP Functionality ===== ===== Unaffected PHP Functionality =====
  
-List existing areas/features of PHP that will not be changed by the RFC. +The changes do not affect the following data types: 
- +  * ''array'' 
-This helps avoid any ambiguity, shows that you have thought deeply about the RFC's impact, and helps reduces mail list noise. +  * ''int'
- +  * ''float'' 
-===== Future Scope ===== +  * ''object'' 
- +  * ''resource''
-This sections details areas where the feature might be improved in future, but that are not currently proposed in this RFC.+
  
 ===== Proposed Voting Choices ===== ===== Proposed Voting Choices =====
  
-Include these so readers know where you are heading and can discuss the proposed voting options.+Yay or nay.
  
 ===== Patches and Tests ===== ===== Patches and Tests =====
  
-Links to any external patches and tests go here.+Coming soon ...
  
-If there is no patch, make it clear who will create a patch, or whether a volunteer to help with implementation is needed.+===== Implementation =====
  
-Make it clear if the patch is intended to be the final patch, or is just a prototype.+N/A
  
-===== Implementation =====+===== References =====
  
-After the project is implemented, this section should contain  +[[https://github.com/php/php-src/pull/547|Pull Request]]
-  the version(s) it was merged to +
-  - a link to the git commit(s) +
-  - a link to the PHP manual entry for the feature+
  
-===== References =====+The competing proposal:
  
-Links to external references, discussions or RFCs+[[alpanumeric_decrement|Alphanumeric Decrement]]
  
 ===== Rejected Features ===== ===== Rejected Features =====
  
 Keep this updated with features that were discussed on the mail lists. Keep this updated with features that were discussed on the mail lists.
rfc/normalize_inc_dec.1387446546.txt.gz · Last modified: 2017/09/22 13:28 (external edit)