add support for ::foo syntax meaning "global one"

This commit is contained in:
Stanislav Malyshev 2003-02-16 13:27:33 +00:00
parent ce432004be
commit 3e45b23799
2 changed files with 8 additions and 2 deletions

View file

@ -1167,8 +1167,13 @@ void do_fetch_class(znode *result, znode *namespace_name, znode *class_name TSRM
SET_UNUSED(opline->op1);
CG(catch_begin) = fetch_class_op_number;
}
zend_str_tolower(class_name->u.constant.value.str.val, class_name->u.constant.value.str.len);
if ((class_name->u.constant.value.str.len == (sizeof("self") - 1)) &&
if(class_name) {
zend_str_tolower(class_name->u.constant.value.str.val, class_name->u.constant.value.str.len);
}
if(class_name == NULL) {
SET_UNUSED(opline->op2);
opline->extended_value = ZEND_FETCH_CLASS_MAIN;
} else if ((class_name->u.constant.value.str.len == (sizeof("self") - 1)) &&
!memcmp(class_name->u.constant.value.str.val, "self", sizeof("self"))) {
SET_UNUSED(opline->op2);
opline->extended_value = ZEND_FETCH_CLASS_SELF;

View file

@ -625,6 +625,7 @@ function_call:
parse_class_entry:
T_NAMESPACE_NAME T_PAAMAYIM_NEKUDOTAYIM T_STRING T_PAAMAYIM_NEKUDOTAYIM { do_fetch_class(&$$, &$1, &$3 TSRMLS_CC); }
| T_STRING T_PAAMAYIM_NEKUDOTAYIM { do_fetch_class(&$$, NULL, &$1 TSRMLS_CC); }
| T_PAAMAYIM_NEKUDOTAYIM { do_fetch_class(&$$, NULL, NULL TSRMLS_CC); }
;
catch_class_entry: