]> granicus.if.org Git - php/commitdiff
new_variable '{' expr '}' is deprecated as well
authorChristoph M. Becker <cmbecker69@gmx.de>
Mon, 9 Sep 2019 14:57:23 +0000 (16:57 +0200)
committerChristoph M. Becker <cmbecker69@gmx.de>
Mon, 9 Sep 2019 17:05:23 +0000 (19:05 +0200)
Curly brace syntax for accessing array elements and string offsets is
deprecated [1]; this should also be the case for respective `new`
expressions.

This issue has been reported by brzuchal@php.net.

[1] <https://wiki.php.net/rfc/deprecate_curly_braces_array_access>

Zend/tests/varSyntax/newVariable.phpt
Zend/zend_language_parser.y

index 360f99ac36b686d33a08a05b27361a631e197dc9..5505ffc0f1961e281f287cd8b610fec777a85b93 100644 (file)
@@ -23,6 +23,7 @@ var_dump(new $weird[0]->foo::$className);
 
 ?>
 --EXPECTF--
+Deprecated: Array and string offset access syntax with curly braces is deprecated in %s on line %d
 object(stdClass)#%d (0) {
 }
 object(stdClass)#%d (0) {
index c25d13ecf20e9b101d8f1b6e9fc2517fa52ecf7d..f3bb663e0c7abba8ad85bcf9f82ed3e45e29d128 100644 (file)
@@ -1189,7 +1189,7 @@ new_variable:
        |       new_variable '[' optional_expr ']'
                        { $$ = zend_ast_create(ZEND_AST_DIM, $1, $3); }
        |       new_variable '{' expr '}'
-                       { $$ = zend_ast_create(ZEND_AST_DIM, $1, $3); }
+                       { $$ = zend_ast_create_ex(ZEND_AST_DIM, ZEND_DIM_ALTERNATIVE_SYNTAX, $1, $3); }
        |       new_variable T_OBJECT_OPERATOR property_name
                        { $$ = zend_ast_create(ZEND_AST_PROP, $1, $3); }
        |       class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable