我看到的一些PHP代码中充斥着“<?php”和“?>”标签取决于它是否输出HTML。是否有任何性能优势而不是使用echo来编写HTML?当代码通过<?php标记在代码和HTML之间不断切换时,它使代码极难阅读。
请注意,我不只是在谈论偶尔的转换。我正在查看的代码(mantis-bt源代码)让我头疼的是它切换的次数。非常难读。我想知道他们是否有理由这样做?
答案 0 :(得分:17)
就可读性而言,我宁愿看到:
<ul>
<?php foreach ($items as $item): ?>
<li>
<a href="<?php esc($item->url)?>">
<img src="<?php esc($item->icon)?>"/>
<?php esc($item->text)?>
</li>
<?php endforeach; ?>
</ul>
比:
echo "<ul>";
foreach ($items as $item)
{
echo "<li>";
echo '<a href="'.esc($item->url).'">';
echo '<img src="'.esc($item->icon).'"/>';
echo esc($item->text);
echo '</li>';
}
echo "</ul>";
不仅如此,后者让您选择的IDE处理HTML语法和格式(例如,告诉您</a>
缺失)。因此,除非在短篇HTML之间有更多内容,否则<?php
可能更合适。
编辑:至于性能,任何认真对待代码速度的人都会激活一个缓存预编译器,它会将两个版本归结为完全相同的东西。
答案 1 :(得分:3)
除了初学者脚本之外没有任何理由,只是试图将结果带到页面而没有任何架构思考或从长远来看计划进入系统。
您应该做的是将您的设计从逻辑PHP代码中分离出来,并且设计编译应该在脚本运行时结束时完成。
如果您重新设计应用程序,我肯定会建议您从框架开始,因为框架会通过其设计强迫不良习惯。
从codeigniter开始,创建一个简单的博客,了解如何连接/插入/选择/更新数据库,学习如何处理会话,学习控制器以及创建控制器的原则。
在你有一个不错的游戏之后开始从不看代码或设计的距离开始查看编码不佳的应用程序,但它究竟在做什么,是从数据库中获取结果,是否有用户系统等等。
然后开始实现上面的应用程序的基础层,一旦你设计了数据库,你就可以开始构建模型,以便在应用程序中从数据库中获取,开始创建基本视图文件<来自编码应用程序的强>样本并在新应用程序中对其进行重新编码,同时牢记编码的结构和清晰度。
希望这有助于您开始迁移,因为我当然不建议您继续使用此类应用程序。
@米奇
事件认为您的第二段代码更清晰,它仍然将您的视图与应用程序的其余部分结合起来,它应该是这样的:
<html>
<?php $this->load("segments/head"); ?>
<body>
<?php echo $this->wrap("span",$this->link("Some Linke",$this->var("homepage"))) ?>
</body>
</html>
一组专用的视图方法,以防止它与主逻辑交互,这将被包装在一个对象内,以防止范围,只有对象应该能够访问主逻辑。
答案 2 :(得分:2)
原因可能是这样的情况:
<?php if($logged_in) { ?>
<span class="x">Welcome, <?= $_SESSION['user'] ?></span>
<a href="logout.php">Logout</a>
<?php } ?>
而不是:
<?php
if($logged_in) {
echo "<span class=\"x\">Welcome, " . $_SESSION['user'] . "</span>";
echo "<a href=\"logout.php\">Lougout</a>";
}
?>
担心逃避角色的数量会减少。
答案 3 :(得分:0)
虽然就代码运行时间而言这不会产生任何明显的影响,但这是唯一应该计算“性能”的地方的想法是荒谬的。开发人员需要花钱。所以清理这一切都是性能提升!你自己的表现!
这样做。
答案 4 :(得分:0)
PHP提供了HTML不提供的一些功能,例如循环。因此,如果您必须在代码中多次使用循环,则必须在php标记和HTML之间切换。 此外,PHP可以帮助您实现HTML不允许的会话控制。因此,在HTML中嵌入 PHP
非常重要简而言之,要使用其他功能,我们必须使用PHP或其他语言
答案 5 :(得分:0)
我没有统计数据支持这一点,但我的理解是“关闭”php输出HTML而不是使用echo“”更有效率;原因是当你通过echo标签运行你的html时,你正在用PHP解析它来显示,而只是把它放在doc本身就会让浏览器显示它而不必让PHP解析它。
当我进行ColdFusion开发时,我记得听过同样的标签案例。
答案 6 :(得分:0)
我更喜欢使用<?php
和?>
,因为它更容易阅读HTML,但是
如果任何性能损失将是非常小的。我写过HTML
使用echo
,但在HTML中阅读和发现问题非常糟糕。