静态函数调用';s HEREDOC中的结果


Static Function Call's Result in HEREDOC

我刚刚尝试了以下操作:

<?php
$script = <<<HEREDOC
    var delUrl = '{ScriptManager::getDelUrl()}';
HEREDOC;
echo $script;
?>

在浏览器中,我得到:

// Used by JS
var delUrl = '{ScriptManager::getDelUrl()}';

输出的不是静态调用ScriptManager::getDelUrl()的结果,而是文字PHP。有没有一种方法可以使静态调用在HEREDOC中进行评估,可能不将其值分配给HEREDOC之前的变量?

我演示了一个静态调用,但在一个对象上。

这必须在最新版本的PHP上完成,他们最近使它变得更加复杂。计算了ln4和ln5的结果。有可能拥有对象而不是类吗?

<?php
error_reporting(-1);
print("this is PHP".phpversion()."'n");
$a=1;
class b {
    public $c=3;
    public static function d() {
        return 4;
    }
}
$e=new b();
$t=<<<EOSAMPLE
hwllo world $a
ln1 {b->$c}
ln3 {b::d()}
ln4 {$e::d()}
ln5 {$e->d()}
ln2 {$e->c}
EOSAMPLE;
print($t);
$t=<<<'EOSAMPLE'
hwllo world $a
ln1 {b->$c}
ln3 {b::d()}
ln4 {$e::d()}
ln5 {$e->d()}
ln2 {$e->c}
EOSAMPLE;
print($t);
$t=<<<"EOSAMPLE"
hwllo world $a
ln1 {b->$c}
ln3 {b::d()}
ln4 {$e::d()}
ln5 {$e->d()}
ln2 {$e->c}
EOSAMPLE;
print($t);