我刚刚尝试了以下操作:
<?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);