PHP RFC: Bare Name Array Dereference
- Version: 1.0
- Date: 2014-06-01
- Author: Andrea Faulds email@example.com
- Status: Declined
- First Published at: http://wiki.php.net/rfc/bare_name_array_dereference
The current array dereferencing syntax for string keys is somewhat cumbersome:
To dereference an array with a string key requires four characters. By contrast, dereferencing objects is much shorter, as the key name does not need to be quoted most of the time:
That requires just two characters. So, this RFC proposes a similar syntax for dereferencing string keys fitting the IS_STRING profile:
The :> syntax is just my initial proposal. If there is a better (less ugly?) alternative token, please suggest it.
This complements the Bare Name Array Literal RFC, as both this proposal and that one deal with using bare T_STRING names for array keys.
Along with the existing syntax for dereferencing a key in an array, the following new syntax is added:
array :> T_STRING
This functions the same as dereferencing a quoted key in square brackets.
Backward Incompatible Changes
None. This has no effect on existing code.
Proposed PHP Version(s)
Proposed for the next PHP 5.x, which at the time of writing, is PHP 5.7.
SAPIs, extensions, opcache, constants and php.ini are unaffected. No new opcodes are added, this is purely a parsing change.
The :> syntax might not be ideal, and I'm willing to take suggestions for better syntax.
Unaffected PHP Functionality
$arr:>foobar are the same $arr['foobar'], so it is completely optional and shouldn't break anything.
None I can see.
A 2/3 majority as it is a language change. Voting began on 2014-06-21 (after a hiccup it was restarted) and ended 2014-06-28.
Patches and Tests
There is a working and tested patch implementing this here: https://github.com/TazeTSchnitzel/php-src/compare/bareNameArrayDereference
The branch on my GitHub account is here: https://github.com/TazeTSchnitzel/php-src/tree/bareNameArrayDereference
If/when the RFC 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
- http://phpsadness.com/sad/45 - one of my inspirations for this
- The Bare Name Array Literal RFC goes hand-in-hand with this one
- http://marc.info/?t=140164578600002&r=1&w=2 - mailing list discussion on this RFC (it was originally a single RFC containing both this and the literals proposal, but was split into two)
None as yet.