所以我总是开发这样的PHP页面:<?php
位于顶部,?>
位于底部,所有HTML都得到print()ed或echo()ed out 。这比在<?php ?>
标签之外输出的非动态html慢吗?我似乎无法找到任何关于此的信息。
谢谢!
--Mala
更新: consesus似乎在做我以前难以阅读的方式。如果你逐行打破你的字符串就不是这种情况,如:
print("\n".
"first line goes here\n".
"second line goes here\n".
"third line");
等。它实际上使得它比在PHP结构之外使用html更容易阅读,因为这样所有都正确缩进。话虽如此,它涉及很多字符串连接。
答案 0 :(得分:7)
我不确定速度,但通常最好将动态元素和它们的显示分开。
查看一个类似CodeIgniter的框架:它有一个“控制器”和一个“模型”,可以抓取数据,对其进行排序或做任何你喜欢的事情,然后将其提供给“视图”(某种模板)
这个范例叫做MVC,是一个非常有价值的东西。我发现它的主要优点是易于维护代码。我最终得到的是一个怪物文档,每次我接触它时都要重新学习。
资源:
答案 1 :(得分:5)
速度上的差异可能是微不足道的,然而,当** print()用PHP编写所有HTML时,代码会变得非常难看,并且使得它比你只是简单地阅读更难HTML。
编辑另外,如果你是** print()**静态HTML没有改变,那真的有什么意义呢?它没有给你带来额外的好处。
<强>赞成强>
<强>缺点强>
难以阅读的代码
处理PHP引擎的又一步,虽然可能不明显,但这是一个额外的步骤。
答案 2 :(得分:3)
速度可以忽略不计 - 相信我,这不会是你的瓶颈。
除了任何其他MVC框架之外,您可能还想查看一个简单的模板系统,例如Smarty,它将您的PHP逻辑与HTML分离,并进行缓存。
答案 3 :(得分:2)
我不知道它是慢还是快,但(在我看来)它使代码更难理解。我想这就是为什么我通常不这样做。
答案 4 :(得分:2)
从性能的角度来看几乎是一样的。 我会把重点放在代码的可读性上。如果遇到性能问题,请找出瓶颈并对其进行缓存。
答案 5 :(得分:1)
这比在
<?php ?>
标签之外输出非动态html要慢吗?
嗯,是的,它是......勉强。但这不是真正的问题:这完全取决于可读性。
这样一切都正确缩进
你的例子根本没有缩进,这对于print
来说是非常典型的 - 重,PHP我很遗憾不得不维护!
尝试这种方法来保持良好,一致的缩进:
<ul>
<?php
// block of arbitrary code blah blah
//
$conditions= get_conditions_from_request();
$isadmin= $user->privileges>=PRIV_ADMIN;
?>
<?php foreach (select_things($conditions) as $thing) { ?>
<li>
<strong><?php h($thing->title); ?></strong>
<?php if ($isadmin) { ?>
<a href="/editthing.php?id=<?php u($thing->id); ?> (Edit) </a>
<?php } ?>
<?php h($thing->description); ?>
</li>
<?php } ?>
</ul>
(这假定function h
调用echo htmlspecialchars
和u
调用echo htmlspecialchars urlencode
。正确获取这些转义内容对于建立安全网站至关重要,并且是基于print
的PHP几乎总是错误的,因为它倾向于使用"blah $var blah"
- 样式模板,而根本没有任何转义。)
答案 6 :(得分:0)
也许不是最好的做法,但我选择混合和匹配print()语句。对于大块的布局代码,我不使用print(),但如果我正在渲染一个复杂的if / else或for / while块,并且我将每隔一个字退出PHP块,那么我将打印用动态文本输出非动态文本。
答案 7 :(得分:0)
性能最多可以忽略不计。您可以创建一个页面,并在其上放置一个计时器。 (这是tutorial on creating a script timer)
以两种方式输出完全相同的数据,并使用尽可能多的采样量进行测量,这应该大致告诉您哪个更快。我猜的非常接近。
我已经看到很多这些页面嵌入了HTML中的PHP,我不喜欢它。正如Alex Mcp建议你应该考虑一个MVC模型。
嵌入到html中的脚本的问题是流控制和逻辑不容易阅读,并且在这里和那里发生了一些奇怪的问题。对我来说最好的解决方案通常是使用Smarty或Zend Framework来创建模板页面,然后交换进出的数据。从长远来看,管理起来容易得多。