我是 PHP 新手,大部分时间我都在“回显”我的 HTML。今天,我发现了这种方法,它让事情变得简单了 1000 倍:
<?php if(get_field('field_name')){ ?>
<p>HTML can go here without echo'ing it</p>
<?php } ?>
但这是一种公认的方式吗?它似乎每次都有效。谢谢。
我是 PHP 新手,大部分时间我都在“回显”我的 HTML。今天,我发现了这种方法,它让事情变得简单了 1000 倍:
<?php if(get_field('field_name')){ ?>
<p>HTML can go here without echo'ing it</p>
<?php } ?>
但这是一种公认的方式吗?它似乎每次都有效。谢谢。
对于具有自动完成/代码建议的 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 手册说See Are PHP short tags是否可以使用?和PHP echo vs PHP 短标签Since PHP 5.4.0, <?= is always available.
里面<?php ?>
的所有东西都由 PHP: Hypertext Preprocessor 解析,所以有人可能会说它需要更多的资源来使用echo '<html><here>';
,但是如果你没有超过 100000echo
或print
's + 开始<?php
和结束?>
需要很少的指令,这又是一个错误的地方进行优化同样echo
,在计算 cpu 指令时它们几乎相同,至少在我的安装中是这样。
请参阅PHP 脚本究竟是如何执行的?
以及Sebastian Bergmann 的php.net/manual/en/tokens.php
和PHP 编译器内部幻灯片
1.77s.: 1 000 000 次$var = rand(0, 1); echo 'Foo Bar '.$var;
1.61s.: 1 000 000 次$var = rand(0, 1); ?>Foo Bar <?php echo $var; ?><?php
1.83s.: 1 000 000 次$var = rand(0, 1); echo "Foo Bar $var";
我真的认为最重要的是您喜欢如何编写/阅读代码。有时最好先写后读if (...) { echo "something"; }
,有时<?php if (...) { ?>something<?php } ?>
就我个人而言,我更喜欢echo "...";
在有很多变量或仅打印出一小段文本以及?>...<?php
输出大块 html 或只有很少变量的长文本时使用。这使代码更易于阅读。
如果我猜对了,php首先进行词法分析并将结果传递给加速器,从这个角度来看?>text<?php
,echo "text";
有很大的不同,但它仍然不会改变普通网站项目的性能。
更清楚:加速器本身确实提高了性能,但关于使用?>text<?php
或echo "text";
没有太大的区别。
是的,它被广泛接受和使用,但我认为(至少没有从 PHP 文档中找到任何明确的内容)它仍然是未记录的方式,但是,正如您已经知道的那样,它不仅仅是方式。基本上,它的作用与使用 echo 相同:
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; ?>
关于分离条件语句的官方文档在这里:control-structures.intro{
和language.basic-syntax.phpmode.php一起记录了它,但是只有替代方法的演示(见上文)。}
<?php
?>
It is. But it has also become a standard to omit the ending ?>
in every file, so there is no trailing whitespace or line ending in the output.
<?php if(get_field('field_name')){ ?>
<p>HTML can go here without echo'ing it</p>
<?php }
If enabled in your php.ini, you can also use short tags (<?
instead of <?php
)
我建议您对控制结构使用替代语法。