【发布时间】:2009-12-26 21:20:18
【问题描述】:
如何在没有 goto 的情况下编写:
ob_start();
$a = 0;
echo "START of LEFT<br />";
begin:
if($a > 0) {
echo "CONTENT LEFT: $a<BR />";
<VERY DIFFICULT ALGORHITM>
goto end;
}
<... ALL THE REST CODE OF LEFT ...>
echo "END of LEFT<br /><br />";
$output1 = ob_get_contents();
ob_end_clean();
ob_start();
echo "START of CENTER<br />";
$a = 5; goto begin;
end:
<... ALL THE REST CODE OF CENTER ...>
echo "END of CENTER<br />";
$output2 = ob_get_contents();
ob_end_clean();
// print it
echo $output1.$output2;
要得到这个回声:
START of LEFT
CONTENT LEFT: 5
END of LEFT
START of CENTER
END of CENTER
要求:
1.我不能更改顺序(CORE( echo $a ), and PLUGIN( $a=5 )):
ob_start();
$a = 0;
<ANY CODE>
echo $a;
$output1 = ob_get_contents();
ob_end_clean();
ob_start();
<ANY CODE>
$a = rand(0,10);
$output2 = ob_get_contents();
ob_end_clean();
2.输出必须通过ob_get_contents();
但我可以在某些地方写任何代码。
// 求解 ob_get_contents(); 仅在想要替换输出 HTML CODE 中的几行,但 无法更改变量值,以更改 ALGORHYTM(取决于 var 值),它会生成随机的 HTML 代码。
另外, 当我检查我的代码时,我了解到,我的代码,即使使用 GOTO 标签语句,不会更改 $output1 内容?怎么做?唯一的方法是从他的开始重新缓存 $output1。或者也许我可以通过其他方式做到这一点?
【问题讨论】:
-
这段代码让我非常非常难过。
-
我也是。我有点困惑,你刚才好像问了很多同样的问题。不太酷。
-
不一样,相似,不一样,另一个是全源公司。设计模式相关。这一项在一个主题中指定 - 没有 goto 的变量传输。
标签: caching php-5.3 goto ob-get-contents