svn: /php/php-src/ branches/PHP_5_4/NEWS branches/PHP_5_4/Zend/tests/bug55247.phpt branches/PHP_5_4/Zend/zend_language_parser.y
trunk/Zend/tests/bug55247.phpt trunk/Zend/zend_language_parser.y

From: Date: Mon, 01 Aug 2011 12:08:44 +0000
Subject: svn: /php/php-src/ branches/PHP_5_4/NEWS branches/PHP_5_4/Zend/tests/bug55247.phpt branches/PHP_5_4/Zend/zend_language_parser.y
trunk/Zend/tests/bug55247.phpt trunk/Zend/zend_language_parser.y
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-65671@lists.php.net to get a copy of this message
dmitry Mon, 01 Aug 2011 12:08:44 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=314025 Log: Added support for Class::{expr}() syntax (Pierrick) Changed paths: U php/php-src/branches/PHP_5_4/NEWS A php/php-src/branches/PHP_5_4/Zend/tests/bug55247.phpt U php/php-src/branches/PHP_5_4/Zend/zend_language_parser.y A php/php-src/trunk/Zend/tests/bug55247.phpt U php/php-src/trunk/Zend/zend_language_parser.y Modified: php/php-src/branches/PHP_5_4/NEWS =================================================================== --- php/php-src/branches/PHP_5_4/NEWS 2011-08-01 12:08:29 UTC (rev 314024) +++ php/php-src/branches/PHP_5_4/NEWS 2011-08-01 12:08:44 UTC (rev 314025) @@ -5,6 +5,7 @@ . Short array syntax, see UPGRADING guide for full details (rsky0711 at gmail . com, sebastian.deutsch at 9elements . com, Pierre) . Binary numbers format (0b001010). (Jonah dot Harris at gmail dot com) + . Support for Class::{expr}() syntax (Pierrick) - Removed features: . Removed magic_quotes_gpc, magic_quotes_runtime and magic_quotes_sybase ini options. Added: php/php-src/branches/PHP_5_4/Zend/tests/bug55247.phpt =================================================================== --- php/php-src/branches/PHP_5_4/Zend/tests/bug55247.phpt (rev 0) +++ php/php-src/branches/PHP_5_4/Zend/tests/bug55247.phpt 2011-08-01 12:08:44 UTC (rev 314025) @@ -0,0 +1,33 @@ +--TEST-- +Request #55247 (Parser problem with static calls using string method name) +--FILE-- +<?php +class Test{ + public static function __callStatic($method, $arguments) + { + echo $method . PHP_EOL; + } + public function __call($method, $arguments) + { + echo $method . PHP_EOL; + } +} + +$method = 'method'; + +$test = new Test(); + +$test->method(); +$test->$method(); +$test->{'method'}(); + +Test::method(); +Test::$method(); +Test::{'method'}(); +--EXPECT-- +method +method +method +method +method +method Modified: php/php-src/branches/PHP_5_4/Zend/zend_language_parser.y =================================================================== --- php/php-src/branches/PHP_5_4/Zend/zend_language_parser.y 2011-08-01 12:08:29 UTC (rev 314024) +++ php/php-src/branches/PHP_5_4/Zend/zend_language_parser.y 2011-08-01 12:08:44 UTC (rev 314025) @@ -797,13 +797,13 @@ | T_NS_SEPARATOR namespace_name '(' { $3.u.op.opline_num = zend_do_begin_function_call(&$2, 0 TSRMLS_CC); } function_call_parameter_list ')' { zend_do_end_function_call(&$2, &$$, &$5, 0, $3.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } - | class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' { $4.u.op.opline_num = zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } + | class_name T_PAAMAYIM_NEKUDOTAYIM variable_name '(' { $4.u.op.opline_num = zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } function_call_parameter_list ')' { zend_do_end_function_call($4.u.op.opline_num?NULL:&$3, &$$, &$6, $4.u.op.opline_num, $4.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} | class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' { zend_do_end_variable_parse(&$3, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } function_call_parameter_list ')' { zend_do_end_function_call(NULL, &$$, &$6, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} - | variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' { zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } + | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_name '(' { zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } function_call_parameter_list ')' { zend_do_end_function_call(NULL, &$$, &$6, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' { zend_do_end_variable_parse(&$3, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } Added: php/php-src/trunk/Zend/tests/bug55247.phpt =================================================================== --- php/php-src/trunk/Zend/tests/bug55247.phpt (rev 0) +++ php/php-src/trunk/Zend/tests/bug55247.phpt 2011-08-01 12:08:44 UTC (rev 314025) @@ -0,0 +1,33 @@ +--TEST-- +Request #55247 (Parser problem with static calls using string method name) +--FILE-- +<?php +class Test{ + public static function __callStatic($method, $arguments) + { + echo $method . PHP_EOL; + } + public function __call($method, $arguments) + { + echo $method . PHP_EOL; + } +} + +$method = 'method'; + +$test = new Test(); + +$test->method(); +$test->$method(); +$test->{'method'}(); + +Test::method(); +Test::$method(); +Test::{'method'}(); +--EXPECT-- +method +method +method +method +method +method Modified: php/php-src/trunk/Zend/zend_language_parser.y =================================================================== --- php/php-src/trunk/Zend/zend_language_parser.y 2011-08-01 12:08:29 UTC (rev 314024) +++ php/php-src/trunk/Zend/zend_language_parser.y 2011-08-01 12:08:44 UTC (rev 314025) @@ -797,13 +797,13 @@ | T_NS_SEPARATOR namespace_name '(' { $3.u.op.opline_num = zend_do_begin_function_call(&$2, 0 TSRMLS_CC); } function_call_parameter_list ')' { zend_do_end_function_call(&$2, &$$, &$5, 0, $3.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } - | class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' { $4.u.op.opline_num = zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } + | class_name T_PAAMAYIM_NEKUDOTAYIM variable_name '(' { $4.u.op.opline_num = zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } function_call_parameter_list ')' { zend_do_end_function_call($4.u.op.opline_num?NULL:&$3, &$$, &$6, $4.u.op.opline_num, $4.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} | class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' { zend_do_end_variable_parse(&$3, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } function_call_parameter_list ')' { zend_do_end_function_call(NULL, &$$, &$6, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} - | variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' { zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } + | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_name '(' { zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } function_call_parameter_list ')' { zend_do_end_function_call(NULL, &$$, &$6, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' { zend_do_end_variable_parse(&$3, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); }

« previous php.cvs (#65671) next »