rfc:short_list_syntax

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
Last revisionBoth sides next revision
rfc:short_list_syntax [2016/04/05 14:24] – clearer language ajfrfc:short_list_syntax [2016/05/20 00:03] – Implemented ajf
Line 1: Line 1:
 ====== PHP RFC: Square bracket syntax for array destructuring assignment ====== ====== PHP RFC: Square bracket syntax for array destructuring assignment ======
   * Version: 1.0   * Version: 1.0
-  * Date: 2016-04-03+  * Date: 2016-04-07
   * Authors: Andrea Faulds <ajf@ajf.me>, Bob Weinand <bwoebi@php.net>   * Authors: Andrea Faulds <ajf@ajf.me>, Bob Weinand <bwoebi@php.net>
-  * Status: Draft+  * Status: Implemented (PHP 7.1)
   * First Published at: http://wiki.php.net/rfc/short_list_syntax   * First Published at: http://wiki.php.net/rfc/short_list_syntax
  
Line 77: Line 77:
 <?php <?php
  
-// These two statements are equivalent:+// The two lines in each of the following pairs are equivalent to each other 
 list($a, $b, $c) = array(1, 2, 3); list($a, $b, $c) = array(1, 2, 3);
 [$a, $b, $c] = [1, 2, 3]; [$a, $b, $c] = [1, 2, 3];
  
-// These two statements are also equivalent: 
 list("a" => $a, "b" => $b, "c" => $c) = array("a" => 1, "b" => 2, "c" => 3); list("a" => $a, "b" => $b, "c" => $c) = array("a" => 1, "b" => 2, "c" => 3);
 ["a" => $a, "b" => $b, "c" => $c] = ["a" => 1, "b" => 2, "c" => 3]; ["a" => $a, "b" => $b, "c" => $c] = ["a" => 1, "b" => 2, "c" => 3];
 +
 +list($a, $b) = array($b, $a);
 +[$a, $b] = [$b, $a];
 </code> </code>
  
Line 118: Line 121:
 // This is also not allowed: // This is also not allowed:
 [list($a, $b), list($c, $d)] = [[1, 2], [3, 4]]; [list($a, $b), list($c, $d)] = [[1, 2], [3, 4]];
 +
 +// This, however, is allowed:
 +[[$a, $b], [$c, $d]] = [[1, 2], [3, 4]];
 </code> </code>
 +
 +Aside from this restriction, assignment with <php>[]</php> on the left-hand side behaves identically to <php>list()</php> in all respects.
  
 ===== Backward Incompatible Changes ===== ===== Backward Incompatible Changes =====
Line 136: Line 144:
 ===== Open Issues ===== ===== Open Issues =====
  
-Currently, the patch permits nesting the <php>[]</php> syntax form within <php>list()</php>. This will need to be fixed.+None.
  
 ===== Unaffected PHP Functionality ===== ===== Unaffected PHP Functionality =====
  
-The existing <php>list()</php> syntax will not be removednor deprecated, as a result of this RFC.+This RFC does not remove nor deprecate the existing <php>list()</php> syntax, and it continues to function identically.
  
 ===== Future Scope ===== ===== Future Scope =====
Line 146: Line 154:
 We may wish to introduce destructuring assignment syntax for objects in future. We may wish to introduce destructuring assignment syntax for objects in future.
  
-===== Proposed Voting Choices =====+===== Vote =====
  
 Because this proposal affects the language syntax (and also therefore the specification), it is a language change and requires at least a 2/3 majority to be accepted when put to a vote. Because this proposal affects the language syntax (and also therefore the specification), it is a language change and requires at least a 2/3 majority to be accepted when put to a vote.
  
 The vote will be a simple Yes/No vote on whether or not to accept the RFC for PHP 7.1 and merge the patch into master. The vote will be a simple Yes/No vote on whether or not to accept the RFC for PHP 7.1 and merge the patch into master.
 +
 +Voting started on 2016-04-27 and ended on 2016-05-08.
 +
 +<doodle title="Accept the RFC Square bracket syntax for array destructuring assignment for PHP 7.1?" auth="ajf" voteType="single" closed="true">
 +   * Yes
 +   * No
 +</doodle>
  
 ===== Patches and Tests ===== ===== Patches and Tests =====
Line 159: Line 174:
  
 ===== Implementation ===== ===== Implementation =====
 +Merged into master for PHP 7.1: http://git.php.net/?p=php-src.git;a=commitdiff;h=4f077aee836ad7d8335cf62629a8364bdf939db9
 +
 +Not yet in the language specification.
 +
 After the project is implemented, this section should contain  After the project is implemented, this section should contain 
-  - the version(s) it was merged to 
-  - a link to the git commit(s) 
   - a link to the PHP manual entry for the feature   - a link to the PHP manual entry for the feature
  
rfc/short_list_syntax.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1