PHP上下文切换

时间:2012-07-26 14:12:43

标签: php asp-classic context-switching

从经典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世界?

3 个答案:

答案 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.