
你可以在这个衬里找到多少改进?
回声 ("this ".$will." be displayed.");
没有echo的括号
第一个,可能是最明显的,是无用的括号。这 回声 is a ‘语言结构’,AKA一种特殊的PHP功能:等等,它就不了’t需要任何括号。夹杂物,返回或打印也是如此。上面的此代码与:
回声 "this ".$will." be displayed.";
即使两个额外的令牌对PHP表示一些额外的工作,括号在此处没有影响。在其他罕见情况下可能感受到括号的影响,其中括号将迫使结果由值传递,而不是作为参考,或者如果回声呼叫后跟其他操作员。
return (&$x); // always returns a value, not a reference include('my_file.php') || print("error loading"): // always produce an error and an message.
这段代码中的主要效果是使读者觉得‘echo’是某种功能。它掩盖了回声接受任意数量的参数。实际上,括号中不可能以下:
回声 ($a, $b, $c); // syntax error echo $a, $b, $c; // but this works
不需要连接
与Echo的多个参数很少使用,这是一个人可以在PHP中更好地回声的地方。级联实际上是无用的。 PHP如何处理这条线?
回声 "this ".$will." be displayed.";
PHP找到了‘echo’因此,它理解将显示以下表达式,将其发送到输出。然后,它找到了连接:要处理它,PHP将三个字符串所需的内存分配在一起(这里,4 + strlen($ Will)+ 14),然后将来自字符串/变量的值复制到新的内存位置。然后,它将整个结果赋予回声。在Snap中,这条线在最后一刻,脚本所需的内存量增加了一倍。
另一方面,当将字符串提供单独的参数时,Echo将立即将它们发送到输出,而无需任何额外的内存分配。
回声 "this ", $will, " be displayed.";
诸如以下的级联,这也是如此:
回声 "this $will be displayed.";
比印刷更好的回声?
您可以通过使用echo作为多参数函数轻松地保存一些或多个内存,并避免最后分钟连接。这可能尤其如此,模板系统尤其如此,该系统沿途收集内容的碎片,最后将其输出一体;迟到也是如此,如新行:
回声 $message."\n"; // memory += strlen($message) + 1
这也可能是回声的值得注意的优势: 打印 is a 语言结构 just like echo, but will only accept one argument, thus, requiring the concatenation or several calls.
是对多个参数回声,否打印和括号!
pingback: 更好的php回声 - exakat