从经典ASP世界来看,存在上下文切换问题。上下文切换是你打开PHP标签,你写一点PHP代码,然后你关闭标签,你继续一点点HTML并回到PHP并继续经常这些开关。在ASP中,不推荐这种编程风格,我们建议尽量减少它。
换句话说,而不是在ASP中编写这样的代码
My name is <%response.write myName %> and I am <%response.write myage %> years of age.
我们建议编写如下代码;
<%response.write "My name is " & myName & " and I am " & myage & " years of age."%>
使用后者,ASP.DLL花费更少的时间来解析脚本。
我的问题是这个概念/问题/担心是否适用于PHP世界?
答案 0 :(得分:1)
嗯,这不是PHP的工作方式。没有上下文切换,文件完全是PHP,<?php ?>
标签之外的任何内容都相当于一个静态echo语句。
如果使用操作码缓存,则解析时间大致相同,完全不相关。
您可以使用parsekit编译不同的文件,并查看生成的操作码类型。
所以这个:
<?php echo "hi"; ?>
<?php echo "hi"; ?>
<?php echo "hi"; ?>
<html>
完全相同:
<?php
echo "hi";
echo "hi";
echo "hi";
echo "<html>";
?>
请注意,前一个示例中的换行符不会输出,即使它们位于php标记之外。
答案 1 :(得分:1)
至少在视图部分,
My name is <?php echo $myName ?> and I am <?php echo $myAge ?> years of age.
优于
<?php echo "My name is $myName and I am $myage years of age." ?>
最好只将动态部分留给PHP。
答案 2 :(得分:1)
这两个样本也可以用PHP编写:
My name is <?php echo $myName; ?> and I am <?php echo $myage; ?> years of age.
和
<?php echo 'My name is ' . $myName . ' and I am ' . $myage . ' years of age.' ?>
前者在进出PHP时使用更多时间(无意义)进行解析,但是,从设计的角度来看,后者的可维护性较差。我建议第一种方法来明确说明什么是动态/ PHP,什么不是。
如果您在PHP中启用了短开放标记,虽然它对速度没有任何帮助,但通过将第一行缩短到以下内容可能更容易阅读(我的个人意见):
My name is <?=$myName;?> and I am <?=$myage;?> years of age.