Edit report at http://bugs.php.net/bug.php?id=52897&edit=1
ID: 52897 Updated by: [email protected] Reported by: chealer at gmail dot com Summary: Strings variable parsing - complex syntax -Status: Assigned +Status: Closed Type: Bug Package: Unknown/Other Function PHP Version: Irrelevant Assigned To: aharvey Block user comment: N New Comment: This bug has been fixed in SVN. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. Previous Comments: ------------------------------------------------------------------------ [2010-09-22 10:31:50] [email protected] Automatic comment from SVN on behalf of aharvey Revision: http://svn.php.net/viewvc/?view=revision&revision=303666 Log: Fix doc bug #52897 (Strings variable parsing - complex syntax). ------------------------------------------------------------------------ [2010-09-22 10:28:07] [email protected] Cheers Joey. The use of the word "namespace" actually predates PHP itself gaining namespaces -- it's presumably meant to mean "any variable you can access in the current scope". I'll rewrite that paragraph to remove the ambiguity. ------------------------------------------------------------------------ [2010-09-21 05:24:04] [email protected] patch #303636 documents the fact that surelynot() does not work ------------------------------------------------------------------------ [2010-09-21 04:56:06] chealer at gmail dot com Description: ------------ Strings variables parsing, as documented on http://ca2.php.net/manual/en/language.types.string.php#language.types.string.parsing is partly broken, or incorrectly documented. The documentation says: In fact, any value in the namespace can be included in a string with this syntax. Simply write the expression the same way as it would appear outside the string, and then wrap it in { and }. But this seems to only work with pre-computed values accessible through variables (using the dollar sign). This works neither for return values of functions in the namespace, nor for constants. BTW, in the examples, there is an extra backslash for the method example: This is the value of the var named by the return value of \$object->getName(): Test script: --------------- <?php namespace test; $working = "works"; const MAYBENOT = "doesnt"; function surelynot() { return "neither"; } $str = <<< DOC A {$working} B {MAYBENOT} C {surelynot()} D DOC; echo $str; Expected result: ---------------- A works B doesnt C neither D Actual result: -------------- A works B {MAYBENOT} C {surelynot()} D ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=52897&edit=1
