HEREDOC中的静态函数调用结果

时间:2013-08-04 12:39:58

标签: php static-methods heredoc

我刚刚尝试了以下内容:

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

echo $script;
?>

在浏览器中我得到了:

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

输出是文字PHP,而不是看到静态调用ScriptManager::getDelUrl()的结果。有没有办法让HEREDOC内的静态调用得到评估,可能没有在HEREDOC之前将它们的值赋值给变量?

1 个答案:

答案 0 :(得分:0)

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

这必须在最新版本的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);