2012-07-26 131 views
0

從經典的ASP世界中,出現了上下文切換的問題。上下文切換是你打開PHP標籤,編寫一段php代碼,然後關閉標籤,繼續使用一小段HTML並返回到PHP並且頻繁地繼續執行這些開關。在ASP中,我們不建議使用這種編程風格,我們建議儘量減少它。PHP上下文切換

換句話說,而不是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世界嗎?

回答

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標籤。

+0

請解釋downvote。據我所知,我的答案沒有錯。 – Esailija 2012-07-26 14:31:46

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。

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.