我是PHP的新手,大多数时候我一直在'回应'我的HTML。今天,我找到了这样做的方式,这使事情变得容易1000倍:
<?php if(get_field('field_name')){ ?>
<p>HTML can go here without echo'ing it</p>
<?php } ?>
但这是一种可接受的方式吗?它似乎每次都有效。感谢。
答案 0 :(得分:2)
对于具有自动完成/代码建议的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配置(并不总是可用/可更改/可写)值short_open_tag
。但PHP手册说 Since PHP 5.4.0, <?= is always available.
见Are PHP short tags acceptable to use?
和PHP echo vs PHP short tags
PHP {1}}内的所有内容都由PHP解析:超文本预处理器,所以有人可能会说使用<?php ?>
需要更多资源,但如果你还没有结束,这也是做错优化的错误地方100000 echo '<html><here>';
或echo
的+开始print
和结束<?php
也需要很少的指令,?>
所以它们在计算cpu指令时几乎相同,至少我的安装。
见How exactly is a PHP script executed?
和php.net/manual/en/tokens.php
和PHP Compiler Internals slides by Sebastian Bergmann
1.77s。:1 000 000次echo
1.61s:1 000 000次$var = rand(0, 1); echo 'Foo Bar '.$var;
1.83s:1 000 000次$var = rand(0, 1); ?>Foo Bar <?php echo $var; ?><?php
我真的认为最重要的是你喜欢写/读代码。有时最好写一下,然后再阅读$var = rand(0, 1); echo "Foo Bar $var";
有时是if (...) { echo "something"; }
我个人更喜欢使用<?php if (...) { ?>something<?php } ?>
,当有很多变量或只打印出一小段文本时echo "...";
输出大量的html或长文本时只有很少的变量。这使代码更容易阅读。
如果我做对了,php首先进行词法分析并将结果传递给加速器,从这个角度来看?>...<?php
和?>text<?php
有很大差异,但它仍然没有改变正常网站项目中的性能。更明确:加速器本身确实提高了性能,但使用echo "text";
或?>text<?php
并没有太大的区别。
是的,它被广泛接受和使用,但我认为(至少没有从PHP文档中找到任何清楚的东西)它仍然是无证的方式,但是,正如你已经知道它不仅仅是方式。基本上它就像使用echo一样工作:
echo "text";
在尝试查找官方文档时,我已阅读这些页面:
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
使用谷歌,搜索一些论坛。
似乎没有经常使用明确记录的 alternate 方式:
if ( get_field('field_name') ) {
echo "<p>HTML can go here by echo'ing it</p>";
}
有关在条件语句中按<?php if ($a == 5): ?>
A is equal to 5
<?php endif; ?>
和{
分隔}
和<?php
的官方文档在此处:control-structures.intro和language.basic-syntax.phpmode.php一起记录在案但是,只有替代方式才能进行演示(见上文)。
答案 1 :(得分:0)
是的。但它也成为在每个文件中省略结尾?>
的标准,因此输出中没有尾随空格或行结束。
<?php if(get_field('field_name')){ ?>
<p>HTML can go here without echo'ing it</p>
<?php }
如果在php.ini中启用,您还可以使用短标记(<?
代替<?php
)
答案 2 :(得分:-1)