diff options
| author | Andi Gutmans <andi@php.net> | 2000-12-05 18:45:58 +0000 |
|---|---|---|
| committer | Andi Gutmans <andi@php.net> | 2000-12-05 18:45:58 +0000 |
| commit | 352d23b8535e61a98310f5722ff8b15607be4453 (patch) | |
| tree | 35b76f443f98277c463aa6e367a5ee98882ddccf | |
| parent | 589a66fedade6a5ddf4d0ba17f3ef395dd645d99 (diff) | |
| download | php-git-352d23b8535e61a98310f5722ff8b15607be4453.tar.gz | |
- Support for $var =& new foo() syntax. This allows you to use objects
which create extra references to themselves in the constructor.
| -rw-r--r-- | Zend/zend_language_parser.y | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index a84b57cd59..720b83696d 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -419,6 +419,7 @@ expr_without_variable: | cvar '=' expr { zend_do_end_variable_parse(BP_VAR_W, 0 CLS_CC); zend_do_assign(&$$, &$1, &$3 CLS_CC); } | cvar '=' '&' w_cvar { zend_do_end_variable_parse(BP_VAR_W, 0 CLS_CC); zend_do_assign_ref(&$$, &$1, &$4 CLS_CC); } | cvar '=' '&' function_call { zend_do_end_variable_parse(BP_VAR_W, 0 CLS_CC); zend_do_assign_ref(&$$, &$1, &$4 CLS_CC); } + | cvar '=' '&' T_NEW class_name { zend_do_extended_fcall_begin(CLS_C); zend_do_begin_new_object(&$4, &$5 CLS_CC); } ctor_arguments { zend_do_end_new_object(&$3, &$5, &$4, &$7 CLS_CC); zend_do_extended_fcall_end(CLS_C); zend_do_end_variable_parse(BP_VAR_W, 0 CLS_CC); zend_do_assign_ref(&$$, &$1, &$3 CLS_CC); } | T_NEW class_name { zend_do_extended_fcall_begin(CLS_C); zend_do_begin_new_object(&$1, &$2 CLS_CC); } ctor_arguments { zend_do_end_new_object(&$$, &$2, &$1, &$4 CLS_CC); zend_do_extended_fcall_end(CLS_C);} | cvar T_PLUS_EQUAL expr { zend_do_end_variable_parse(BP_VAR_RW, 0 CLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_ADD, &$$, &$1, &$3 CLS_CC); } | cvar T_MINUS_EQUAL expr { zend_do_end_variable_parse(BP_VAR_RW, 0 CLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_SUB, &$$, &$1, &$3 CLS_CC); } |
