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
rfc:short_list_syntax [2016/04/05 14:26] – No open issues ajfrfc:short_list_syntax [2017/09/22 13:28] (current) – external edit 127.0.0.1
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 140: Line 148:
 ===== 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.1459866408.txt.gz · Last modified: 2017/09/22 13:28 (external edit)