The current array dereferencing syntax for string keys is somewhat cumbersome:
$myArray['foobar']['andSoOn']['moreKeys']
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:
$myObject->foobar->andSoOn->moreKeys
That requires just two characters. So, this RFC proposes a similar syntax for dereferencing string keys fitting the IS_STRING profile:
$myArray:>foobar:>andSoOn:>moreKeys
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.
None. This has no effect on existing code.
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.
$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.
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
None as yet.