Hi Internals,
Obviously we can’t use constants or functions directly in strings using variable parsing, I assume because it lacks the easily detectable $.
However, we can use methods because the object variable has the $, which I assume is the reason methods work and functions don’t.
I feel like it’s something that could have been added when dynamic access of static members support was added in 5.3.0, but maybe it was overlooked or decided against? Consider:
<?php
$a = new A();
echo " {A::$static_property} \n"; // doesn't work (unless $static_property is a variable)
echo " {$a::$static_property} \n"; // works
echo " {A::static_method()} \n"; // doesn't work (just text)
echo " {$a::static_method()} \n"; // works
echo " {A::constant} \n"; // doesn't work
echo " {$a::constant} \n"; // doesn't work either, but why?
?>
Also, as a side note, why does this hack below work? It seems like something that would use eval()
, but doesn’t. Take a look:
I found it at the bottom of the manual entry for Strings1. Not something I would use, but it’s interesting to see.
Thanks,
Peter