Edit report at https://bugs.php.net/bug.php?id=61681&edit=1
ID: 61681 Updated by: col...@php.net Reported by: larue...@php.net Summary: Malformed grammar Status: Assigned Type: Bug Package: *General Issues PHP Version: 5.3.10 Assigned To: dmitry Block user comment: N Private report: N New Comment: This is typically a limitation of our grammar. We accept ${ string_varname } and ${ expr } due to the fact that ${asd} is not accessing the variable named after the constant asd's value. When the lexer looks at ${ function_call() } it finds ${ T_STRING_VARNAME() } which will not parse. We might be able to fix it by looking ahead in the <ST_LOOKING_FOR_VARNAME>{LABEL} { rule and detect cases where it should be a T_STRING, i.e if the char after it is either } [ or {. Previous Comments: ------------------------------------------------------------------------ [2012-04-09 15:34:25] larue...@php.net Dmitry, do you think this is okey? or should we document this behavior? ------------------------------------------------------------------------ [2012-04-09 15:33:02] larue...@php.net Description: ------------ if use '@', you can call function in a string substitution context. Test script: --------------- <?php $la = "ooxx"; $a = "${@substr('laruence', 0, 2)}"; echo $a; Expected result: ---------------- PHP Error: syntax error Actual result: -------------- ooxx ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=61681&edit=1