这是把HTML在PHP的正确方法是什么?(Is this the correct way of pu

2019-06-25 08:07发布

我是新来的PHP,和大部分的时间我一直在“echo'ing我的HTML。 今天,我发现这样做的这种方式,这使得事情1000倍更容易:

<?php if(get_field('field_name')){ ?>

   <p>HTML can go here without echo'ing it</p>

<?php } ?>

但它是一个公认的方法是什么? 似乎每一次的工作。 谢谢。

Answer 1:

这更多的是你喜欢如何阅读你的代码。

与已经自动完成/码建议IDE最好是使用<?php if (...) { ?> ,以便自动完成/建议功能,知道什么时候使用HTML和PHP时,建议你的代码。 当然,这是很好的选择编码风格,很容易稍后阅读。
据我所知代码突出不会工作的,应该不行,里面

echo '<div class="c"><h2>...';

不同的编码方式:

除了那些已经提到的没有什么大的差别。 例如使用

echo "<div>$var1<h1>$var2</h1>...";

插入变量更容易( ),代码具有更小的体积,更容易比这个阅读:

<?php 
// <= Some code...
?><div><?php echo $var1; ?><h1><?php echo $var2; ?></h1>...

短开放标签/为什么不使用:

还有<?= ?>可用快捷但由于它需要PHP配置(这并不总是可用的/改变/可写)值I没有用它short_open_tag进行设置。 但是PHP手册说
见是PHP接受使用短标记?
和PHP呼应与PHP短标记

,什么是引擎盖下找到

里面的一切<?php ?>由PHP解析:超文本预处理器所以有人可能会说,它需要更多的资源来使用echo '<html><here>'; 但是这又是错误的地点做优化,如果你没有100000 echo的或print的+原料<?php和结束?>需要几条指令也为不echo ,使他们几乎计数的CPU指令时相同,至少我安装。
见是一个PHP脚本执行的究竟是如何?
和php.net/manual/en/tokens.php
和PHP编译器内部机制幻灯片塞巴斯蒂安·贝格曼

关于性能的一些测试:

1.77s:1 000 000倍$var = rand(0, 1); echo 'Foo Bar '.$var; $var = rand(0, 1); echo 'Foo Bar '.$var;
1.61s:1 000 000倍$var = rand(0, 1); ?>Foo Bar <?php echo $var; ?><?php $var = rand(0, 1); ?>Foo Bar <?php echo $var; ?><?php
1.83s:1 000 000倍$var = rand(0, 1); echo "Foo Bar $var"; $var = rand(0, 1); echo "Foo Bar $var";

我真的觉得这是最了解你喜欢怎么写/读你的代码。 有时,最好写的,后来读
if (...) { echo "something"; }
而有时
<?php if (...) { ?>something<?php } ?>

我个人比较喜欢使用echo "..."; 当存在大量的变量或只有小的一段文字打印出来,并?>...<?php输出与仅几个变量HTML或长文本的大chuncks时。 这使得代码更易于阅读。

关于在评论中提到加速器:

如果我这样做是正确的,PHP第一确实词法分析并将结果促进剂,从这个角度来看?>text<?phpecho "text"; 有很大的区别,但它仍然不会改变正常的网站项目中的表现。
更明确:加速器本身并提高性能,但关于使用?>text<?phpecho "text"; 不作大的差别。

最终的答案:

是的,它被广泛接受和使用,但我认为( )它仍然是无证的方式,不过,因为你已经知道这是不是唯一的方式。 基本上,它就像使用回声不只是同样的工作:

if ( get_field('field_name') ) {
   echo "<p>HTML can go here by echo'ing it</p>";
}

虽然试图找到官方的文档我已阅读这些网页:
php.net/manual/en/control-structures.alternative-syntax.php
php.net/manual/en/language.basic-syntax.phpmode.php
php.net/manual/en/language.types.string.parsing.complex
使用谷歌,并寻找一些论坛。

看来,清楚地记载一种方法是不使用如此频繁:

<?php if ($a == 5): ?>
A is equal to 5
<?php endif; ?>

更新:

关于分离的官方文件{}<?php?>条件语句中是在这里: 控制structures.intro和language.basic-syntax.phpmode.php一起记录它,但是有示范只对方式做到这一点(往上看)。



Answer 2:

它是。 但是,它也成为省略结尾的标准?>中的每个文件,所以没有尾随空格或输出结束线。

<?php if(get_field('field_name')){ ?>

   <p>HTML can go here without echo'ing it</p>

<?php }

如果在你的php.ini文件中激活,您还可以使用短标签( <?而不是<?php



Answer 3:

我建议你使用替代语法控制结构 。



文章来源: Is this the correct way of putting HTML in PHP?