这个
之间有区别吗?<?php
myCode();
echo "Example";
?>
和
<?php
myCode();
?>
Example
此?
性能方面的最佳选择是什么?
我已完成基准打印20000000次&#34;示例&#34;。我已经从CLI执行了脚本,而不是通过HTTP请求(Centos 7 64位)。
使用&#34; echo&#34;:153.06723901367sec
使用HTML:155.80555395508sec
答案 0 :(得分:5)
出于所有实用目的,不,没有相关的区别。在这两种情况下,您的脚本输出都将是“示例”。在这两种情况下,myCode()都是在之前执行的。
事实上,两种情况下的OPCode都是相同的,因为PHP会回显<?php
标签之外的所有内容。它基本上只是一个隐含的回声。
从技术上讲,生成的OPCode的方式会有所不同,但这对性能没有任何影响。解析器大多数<?php
标记之外的任何内容都被视为T_INLINE_HTML
。然后是converted to an echo in the abstract syntax tree:
| T_INLINE_HTML { $$ = zend_ast_create(ZEND_AST_ECHO, $1); }
case ZEND_AST_ECHO:
APPEND_NODE_1("echo");
但是,您的目标应该是尽可能地将逻辑与您的视图和模板分开,因为如果不这样做,它很容易导致意大利面条代码。根据经验,函数不应该回显,而是返回字符串。大多数框架只回显一次:在呈现响应时请求结束时。
由于您提到了“视图”和MVC:MVC中的视图不一定是模板,而是模型中特定数据的特定表示。它可以是最终呈现模板的代码。如果那就是你想要的,你可能想要查看一个模板引擎,比如Twig(尽管PHP本身就是一个模板引擎)。
答案 1 :(得分:-2)
是。第一个是PHP,第二个是HTML。
在第一种情况下,您可以这样做:
<?php
$var = 1;
echo "Example " . $var;
?>
第二种情况$var
在HTML中未定义,因此将被忽略。
<?php
$var = 1;
?>
Example $var
如果你想在HTML中使用那个变量,你需要回到PHP,即
<?php echo $var; ?>
根据我的经验,这是一个偏好的东西,有些页面主要是HTML,可以这样写。但是,如果我正在编写PHP,我更喜欢坚持使用PHP,而不是在两种语言之间反弹。我不知道你可以用HTML做的任何你可以做的事情。这使得令人讨厌的代码很难调试
HTML标题也存在问题(请参阅PHP header()
函数)。