]> granicus.if.org Git - php/commitdiff
add support for ::foo syntax meaning "global one"
authorStanislav Malyshev <stas@php.net>
Sun, 16 Feb 2003 13:27:33 +0000 (13:27 +0000)
committerStanislav Malyshev <stas@php.net>
Sun, 16 Feb 2003 13:27:33 +0000 (13:27 +0000)
Zend/zend_compile.c
Zend/zend_language_parser.y

index 4eb9901b4f8b0f2ce6498cc0b90a710f6a374aac..6b76589f7e77cc77d71b403650ca16908017f280 100644 (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;
index 3d2ebd601fb1682ef6fa4b9948b76ccd38d0746e..b394f0a89edc9ced2f655fcafb21cbfa21460b83 100644 (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: