PHP标签中的echo“example”和“example”是否有区别?

问题描述:

是否有这个PHP标签中的echo“example”和“example”是否有区别?

<?php 
    myCode(); 
    echo "Example"; 
?> 

<?php 
    myCode(); 
?> 
Example 

这有区别吗?

在性能方面什么是最佳选择?

我已经完成了基准印刷20000000次“示例”。我已经从CLI执行脚本,而不是通过HTTP请求(Centos 7 64bit)。

使用 “回声”:153.06723901367sec

使用HTML:155.80555395508sec

+0

你是什么意思**意见**? – Swellar

+5

没有实际区别。去任何更可读的。 – JJJ

+0

@ shashi我不理解:两个作品。我想知道是否有差异(性能,系统调用,ecc)。为什么你们都在倒计时? – TheDeveloper

对于所有务实的宗旨,没有,目前还没有相关的差异。在这两种情况下,您的脚本输出都将是“示例”。在这两种情况下,myCode()都是在之前执行的。

事实上,两种情况下的OPCodes都是相同的,因为PHP会回应<?php标签之外的所有内容。它基本上只是一个隐含的回声。

从技术上讲,生成的OPCodes的方式将有所不同,但这对性能没有影响。大多数<?php标签以外的任何内容都被解析器视为T_INLINE_HTML。然后,这是converted to an echo in the abstract syntax tree

| T_INLINE_HTML { $$ = zend_ast_create(ZEND_AST_ECHO, $1); } 

ZEND_AST_ECHO

case ZEND_AST_ECHO: 
APPEND_NODE_1("echo"); 

然而,你的目标应该是从你的意见和模板尽可能良好的逻辑,因为它很容易导致意大利面条的代码,如果你别。作为一个经验法则,函数不应该回显,而是返回字符串。大多数框架只回显一次:在呈现响应时的请求结束时。

既然你提到的“意见”和MVC:MVC中的视图不一定是一个模板,但是从模型中的特定数据块的具体表现。它可以是最终呈现模板的代码。如果这就是你想要的,你可能想看看一个模板引擎,比如Twig(尽管PHP本身就是一个模板引擎)。

+0

是的。我通常在PHP中使用Smarty,在JS中使用Handlebar。这只是一个关于表演的问题,我从来没有像意大利面代码那样在逻辑中使用视图:) – TheDeveloper

+1

@TheDeveloper性能明智,没有相关的区别。此外,每当询问性能时,请在自己的应用环境中为自己寻找一个帮助和基准,以获得有意义的数字。 – Gordon

+0

好的,所以我会做一个基准测试。 – TheDeveloper

是的。第一个是PHP,第二个是HTML。

在第一种情况下,你可以这样做:

<?php 
$var = 1; 
echo "Example " . $var; 
?> 

第二种情况$var在HTML所以会被忽略不确定。

<?php 
$var = 1; 
?> 
Example $var 

如果你想使用该变量在HTML,你就需要重新回到PHP即

<?php echo $var; ?> 

这是我的经验,喜好的东西,也有一些网页是大多是HTML可以这样写。但是,如果我正在编写PHP,我更愿意坚持使用PHP,而不是在两种语言之间反弹。我不知道你可以用HTML编写的任何你不能用PHP编写的东西。它使得难以调试的令人讨厌的代码成为可能。
此外,还存在HTML标题的问题(请参阅PHP header()函数)。

+3

两种情况下的OPCodes都完全相同。 – Gordon