rfc:uniform_variable_syntax
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
rfc:uniform_variable_syntax [2014/06/09 13:09] – nikic | rfc:uniform_variable_syntax [2017/09/22 13:28] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 2: | Line 2: | ||
* Date: 2014-05-31 | * Date: 2014-05-31 | ||
* Author: Nikita Popov < | * Author: Nikita Popov < | ||
- | * Status: | + | * Status: |
- | * Proposed for: PHP 6 | + | * Discussion: http:// |
===== Introduction ===== | ===== Introduction ===== | ||
Line 52: | Line 52: | ||
// old meaning | // old meaning | ||
$$foo[' | $$foo[' | ||
- | Foo::$bar[' | + | $foo->$bar[' |
$foo-> | $foo-> | ||
+ | Foo:: | ||
</ | </ | ||
Line 157: | Line 158: | ||
Because of the implementational hurdles described in the previous section, we do not support all combinations of | Because of the implementational hurdles described in the previous section, we do not support all combinations of | ||
- | dereferencing operations to an arbitrary | + | dereferencing operations to an arbitrary |
'' | '' | ||
Line 195: | Line 196: | ||
'' | '' | ||
needs to be implemented to support our weird indirect reference semantics. | needs to be implemented to support our weird indirect reference semantics. | ||
- | |||
- | === TODO === | ||
===== Proposal ===== | ===== Proposal ===== | ||
Line 272: | Line 271: | ||
< | < | ||
$$foo[' | $$foo[' | ||
- | Foo::$bar[' | + | $foo->$bar[' |
$foo-> | $foo-> | ||
+ | Foo:: | ||
</ | </ | ||
- | This change is **backwards incompatible** (with low practical impact), which is the reason why this RFC targets PHP 6. | + | This change is **backwards incompatible** (with low practical impact), which is the reason why this RFC targets PHP 7. |
However it is always possible to recreate the old behavior by explicitly using braces: | However it is always possible to recreate the old behavior by explicitly using braces: | ||
Line 285: | Line 285: | ||
</ | </ | ||
- | This syntax will have guaranteed same behavior in both PHP 5 and PHP 6. | + | This syntax will have guaranteed same behavior in both PHP 5 and PHP 7. |
==== Newly added and generalized syntax ==== | ==== Newly added and generalized syntax ==== | ||
Line 349: | Line 349: | ||
// old meaning | // old meaning | ||
$$foo[' | $$foo[' | ||
- | Foo::$bar[' | + | $foo->$bar[' |
$foo-> | $foo-> | ||
+ | Foo:: | ||
</ | </ | ||
Line 356: | Line 357: | ||
occurrence of '' | occurrence of '' | ||
This occurrence must be replaced with '' | This occurrence must be replaced with '' | ||
- | PHP 5 and PHP 6. | + | PHP 5 and PHP 7. |
The latter change turns currently valid syntax into a parse error. Expressions like '' | The latter change turns currently valid syntax into a parse error. Expressions like '' | ||
longer valid and '' | longer valid and '' | ||
- | As these changes only apply to some very rarely used syntax, the breakage seems acceptable for PHP 6. | + | As these changes only apply to some very rarely used syntax, the breakage seems acceptable for PHP 7. |
===== Open issues ===== | ===== Open issues ===== | ||
Line 383: | Line 384: | ||
The main changes are limited to the language parser and compiler. Furthermore some opcode handlers had to be modified | The main changes are limited to the language parser and compiler. Furthermore some opcode handlers had to be modified | ||
to support '' | to support '' | ||
+ | |||
+ | ===== Vote ===== | ||
+ | |||
+ | As this is a language change, a 2/3 majority is required for acceptance. The vote started on 2014-07-07 and ended on 2014-07-14. | ||
+ | |||
+ | <doodle title=" | ||
+ | * Yes | ||
+ | * No | ||
+ | </ | ||
+ |
rfc/uniform_variable_syntax.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1