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
Next revisionBoth sides next revision
rfc:short_list_syntax [2016/04/05 14:24] – clearer language ajfrfc:short_list_syntax [2016/05/08 18:28] – close vote 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: Accepted (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 =====
rfc/short_list_syntax.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1