Doc #52897 [Csd]: Strings variable parsing - complex syntax
| From: | chealer at gmail dot com | Date: | Mon, 27 Sep 2010 21:57:50 +0000 |
| Subject: | Doc #52897 [Csd]: Strings variable parsing - complex syntax | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-5132@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=52897&edit=1
ID: 52897
User updated by: chealer at gmail dot com
Reported by: chealer at gmail dot com
Summary: Strings variable parsing - complex syntax
Status: Closed
Type: Documentation Problem
Package: Documentation problem
PHP Version: Irrelevant
Assigned To: aharvey
Block user comment: N
New Comment:
Thank you aharvey. Well done finding that namespace was used before they
existed! The new version restricts what can be expressed, but is now
over-restrictive. For instance, elements of array variables can be
accessed with complex syntax ({$arr['bar]}).
Previous Comments:
------------------------------------------------------------------------
[2010-09-22 10:31:59] aharvey@php.net
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.
------------------------------------------------------------------------
[2010-09-22 10:31:50] aharvey@php.net
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] aharvey@php.net
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] joey@php.net
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