0

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

4

3 回答 3

1

好吧,至少 PHP 不是这样工作的。没有上下文切换,文件完全是 PHP,<?php ?>标签之外的任何内容都相当于一个静态回显语句。

如果您使用操作码缓存,所花费的解析时间几乎相同并且完全无关紧要。

你可以使用parsekit来编译不同的文件,看看会生成什么样的操作码。

所以这:

<?php echo "hi"; ?>
<?php echo "hi"; ?>
<?php echo "hi"; ?>
<html>

与以下内容完全相同:

<?php
echo "hi";
echo "hi";
echo "hi";
echo "<html>";
?>

请注意,前一个示例中的换行符不会输出,即使它们位于 php 标记之外。

于 2012-07-26T14:16:26.280 回答
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。

于 2012-07-26T14:21:22.020 回答
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 中启用了short-open-tags,虽然它对速度没有任何帮助,但通过将第一行缩短为以下内容(我个人的意见)可能会更容易阅读:

My name is <?=$myName;?> and I am <?=$myage;?> years of age.
于 2012-07-26T14:23:03.907 回答