Skip to content

Commit 3e45b23

Browse files
committed
add support for ::foo syntax meaning "global one"
1 parent ce43200 commit 3e45b23

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

Zend/zend_compile.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1167,8 +1167,13 @@ void do_fetch_class(znode *result, znode *namespace_name, znode *class_name TSRM
11671167
SET_UNUSED(opline->op1);
11681168
CG(catch_begin) = fetch_class_op_number;
11691169
}
1170-
zend_str_tolower(class_name->u.constant.value.str.val, class_name->u.constant.value.str.len);
1171-
if ((class_name->u.constant.value.str.len == (sizeof("self") - 1)) &&
1170+
if(class_name) {
1171+
zend_str_tolower(class_name->u.constant.value.str.val, class_name->u.constant.value.str.len);
1172+
}
1173+
if(class_name == NULL) {
1174+
SET_UNUSED(opline->op2);
1175+
opline->extended_value = ZEND_FETCH_CLASS_MAIN;
1176+
} else if ((class_name->u.constant.value.str.len == (sizeof("self") - 1)) &&
11721177
!memcmp(class_name->u.constant.value.str.val, "self", sizeof("self"))) {
11731178
SET_UNUSED(opline->op2);
11741179
opline->extended_value = ZEND_FETCH_CLASS_SELF;

Zend/zend_language_parser.y

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -625,6 +625,7 @@ function_call:
625625
parse_class_entry:
626626
T_NAMESPACE_NAME T_PAAMAYIM_NEKUDOTAYIM T_STRING T_PAAMAYIM_NEKUDOTAYIM { do_fetch_class(&$$, &$1, &$3 TSRMLS_CC); }
627627
| T_STRING T_PAAMAYIM_NEKUDOTAYIM { do_fetch_class(&$$, NULL, &$1 TSRMLS_CC); }
628+
| T_PAAMAYIM_NEKUDOTAYIM { do_fetch_class(&$$, NULL, NULL TSRMLS_CC); }
628629
;
629630

630631
catch_class_entry:

0 commit comments

Comments
 (0)