我刚刚尝试了以下内容:
<?php
$script = <<<HEREDOC
var delUrl = '{ScriptManager::getDelUrl()}';
HEREDOC;
echo $script;
?>
在浏览器中我得到了:
// Used by JS
var delUrl = '{ScriptManager::getDelUrl()}';
输出是文字PHP,而不是看到静态调用ScriptManager::getDelUrl()
的结果。有没有办法让HEREDOC内的静态调用得到评估,可能没有在HEREDOC之前将它们的值赋值给变量?
答案 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);