我更喜欢在php标签之外编写html,因此eclipse可以用正确的语法高亮显示html。连接方法很难编写,并且不会突出显示(请参阅下面的两个示例)。PHP/HTML输出:echo vs return,输出缓冲和语法高亮挑战
我对这段长度表示歉意。这些例子非常简单,所以它应该是一个简单的阅读。
我不喜欢这样,太多的“报价”和$ O公司,并没有语法高亮显示!:
<?php
display($something){
$o = '';
$o .= '<div>';
$o .= $something;
$o .= '</div>';
return $o;
}
// I want to be able to do this:
echo display(display('something'));
这给出了一个函数来完成关闭<tag>
甚至增加的机会之后再添加html。 上面的例子在功能上是我期望做的,但由于这些原因('引号',$ o's和语法高亮),我还没有创建这样的系统。
下面的例子是我比较喜欢编写html,但是我不能嵌套输出,因为它不会返回!
<?php
function display($something){ ?>
<div>
<?=$something?>
</div>
<?php }
// I'd like to do this, but I can't
display(display('this doesn't return anything to the first function call...'));
这是输出缓冲进来,我会回来,在第二...
我正在设想:
我想能够使用func_get_args()
来完成这样的事情(注意,这将适用于OOP的对象,只是保持简单在这里):
<?php
some_panel(title_style_1('Sample Header'),
panel_content(you_tube($vid_id)),
small_img_frame($img_src));
你基本上可以接受任何这些输出功能并以任何你喜欢的方式嵌套它们。就像你可以把任何<div>
放在任何<p>
之内,反之亦然。唯一的问题是,您必须确保您关闭标签...并且,在这种情况下,您可以在最后或儿童之间添加任意标记。
这就是输出缓冲进来
<?php
function display($something){
ob_start(); // <---- Start buffer ?>
<div>
<?=$something?>
</div>
<?php return ob_end_clean(); // <------ Return output
}
// Now I can do this!!!
echo display(display('this should work!'));
而且,鼓声请....问题:
如果我反复缓冲潜在的数百甚至数千每个请求的时间,这是一个性能打击?我读过警惕输出缓冲由于帖子:
可靠性:如果其他地方的缓冲区开始,从我读,这听起来像这些窝,并有可能发生冲突。
可维护性:如果启动了缓冲区,则必须保证它会停止。
对于我的系统,如果输出缓冲启动,并在同一个函数调用停止,这些事情似乎是确定。这是对潜在的1000个项目的过度迭代,每个开始/停止输出缓冲对于我担心的单个<li>
。另外,如果有人知道任何框架或更好的方法来做我想做的事情,任何建议,将不胜感激!
对不起,我真的不能回答。但是如果你做这样的事情,你有没有想过使用聪明或小枝?我爱你在那里的力量。如果你愿意,你仍然可以“观看”驱动。 – 2013-02-28 01:26:47
我不熟悉这些表格。我最初的印象是,他们没有必要,或者没有太多帮助。我会研究这些,但是,谢谢! – 2013-02-28 01:31:24
我会建议树枝,但那只是一个意见。你可以在那里。并在任何部分生成和注入代码。你也可以有“块”的内容,你准备添加填充等我真的很喜欢它。 – 2013-02-28 01:34:01