rfc:deprecate_curly_braces_array_access

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:deprecate_curly_braces_array_access [2019/07/02 17:17] – Improve RFC introduction and discussion sections theodorejbrfc:deprecate_curly_braces_array_access [2019/08/10 23:19] (current) derick
Line 1: Line 1:
 ====== PHP RFC: Deprecate curly brace syntax for accessing array elements and string offsets ====== ====== PHP RFC: Deprecate curly brace syntax for accessing array elements and string offsets ======
   * Date: 2019-03-12   * Date: 2019-03-12
-  * Author: Andrey Gromov <andrewgrom@rambler.ru> +  * Author: Andrey Gromov <andrewgrom@rambler.ru>, Theodore Brown <theodorejb@outlook.com
-  * Status: Under Discussion+  * Status: Implemented (in PHP 7.4)
   * Discussion: https://externals.io/message/104744   * Discussion: https://externals.io/message/104744
-  * Target version: PHP 7.4 +  * Targets: PHP 7.4 
-  * Implementation: https://github.com/php/php-src/compare/PHP-7.4...rjhdby:deprecate_alternate_array_access+  * Implementation: https://github.com/php/php-src/pull/4416
  
 ===== Introduction ===== ===== Introduction =====
Line 54: Line 54:
 {$one, $two} = $array; // Parse error: syntax error, unexpected ',' {$one, $two} = $array; // Parse error: syntax error, unexpected ','
 </code> </code>
- 
-Finally, supporting the curly brace syntax prevents using this syntax 
-for more valuable features in the future (e.g. array/string slice, absolute 
-offset access, "windows" (like "slice" in GoLang), etc.). 
  
  
Line 71: Line 67:
  
 <code> <code>
-Warning: Array and string offset access syntax with curly braces is deprecated in test.php on line 3+Deprecated: Array and string offset access syntax with curly braces is deprecated in test.php line 3
 int(2) int(2)
 </code> </code>
Line 95: Line 91:
 should be used instead of relying on syntax that can be used for both strings should be used instead of relying on syntax that can be used for both strings
 and arrays (and thus doesn't tell you anything about the underlying type). and arrays (and thus doesn't tell you anything about the underlying type).
 +
 +
 +==== How frequently is the curly brace syntax used? ====
 +Nikita Popov checked the top 2k Composer packages, and found ~2.2k
 +individual uses of the curly brace array syntax. Compared to the 888.3k
 +total array accesses in the data set, usage of the alternative syntax is
 +about 0.25%. However, even this number is inflated somewhat due to
 +duplicate packages (for example, there are two packages that mirror the
 +WordPress Core repository, each with 182 usages). 92% of usages in the
 +top 2k packages are in just 25 unique projects.
  
  
 ==== Will it be too much work for people to migrate code away from the curly brace syntax? ==== ==== Will it be too much work for people to migrate code away from the curly brace syntax? ====
 A migration script has been implemented alongside the deprecation patch: A migration script has been implemented alongside the deprecation patch:
-https://github.com/rjhdby/php-src/blob/deprecate_alternate_array_access/convert_array_access_braces.php+https://gist.github.com/theodorejb/763b83a43522b0fc1755a537663b1863
  
  
Line 107: Line 113:
  
 ===== Vote ===== ===== Vote =====
-Deprecate curly brace array and string offset syntax in PHP 7.4Yes/No. +Started 3 July 2019. Ends 17th July 2019 
 +<doodle title="Deprecate curly brace array and string offset syntax in PHP 7.4" auth="rjhdby" voteType="single" closed="true"> 
 +   Yes 
 +   No 
 +</doodle>
  
 ===== Future Scope ===== ===== Future Scope =====
 Remove the feature entirely (replacing the deprecation warning Remove the feature entirely (replacing the deprecation warning
 with a compiler error) in PHP 8 or another future release. with a compiler error) in PHP 8 or another future release.
- 
  
 ===== References ===== ===== References =====
 +Current discussion: https://externals.io/message/104744 and https://externals.io/message/106130.
 +
 Discussion about deprecation in June 2008: https://externals.io/message/38153. Discussion about deprecation in June 2008: https://externals.io/message/38153.
  
 Discussion about deprecation in November 2005: https://externals.io/message/20143. Discussion about deprecation in November 2005: https://externals.io/message/20143.
  
rfc/deprecate_curly_braces_array_access.1562087867.txt.gz · Last modified: 2019/07/02 17:17 by theodorejb