From: Zeev Suraski Date: Sun, 15 Jul 2001 18:39:14 +0000 (+0000) Subject: Allow indirect reference to method names in class::method() construct X-Git-Tag: PRE_TSRM_MERGE_PATCH~137 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=73f488b323a7d48bd726a748c9e9472e823453fc;p=php Allow indirect reference to method names in class::method() construct --- diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index b1ddec2f12..2384375d9c 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -492,12 +492,18 @@ function_call: | cvar '(' { zend_do_begin_dynamic_function_call(&$1 CLS_CC); } function_call_parameter_list ')' { zend_do_end_function_call(&$1, &$$, &$4, 0, 1 CLS_CC); zend_do_extended_fcall_end(CLS_C);} - | T_STRING T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' { zend_do_extended_fcall_begin(CLS_C); zend_do_begin_class_member_function_call(&$1, &$3 CLS_CC); } + | T_STRING T_PAAMAYIM_NEKUDOTAYIM method_name '(' { zend_do_extended_fcall_begin(CLS_C); zend_do_begin_class_member_function_call(&$1, &$3 CLS_CC); } function_call_parameter_list ')' { zend_do_end_function_call(&$3, &$$, &$6, 1, 1 CLS_CC); zend_do_extended_fcall_end(CLS_C);} ; +method_name: + T_STRING { $$ = $1; } + | cvar { zend_do_end_variable_parse(BP_VAR_R, 0 CLS_CC); $$ = $1; } +; + + exit_expr: /* empty */ { memset(&$$, 0, sizeof(znode)); $$.op_type = IS_UNUSED; } | '(' ')' { memset(&$$, 0, sizeof(znode)); $$.op_type = IS_UNUSED; }