2017-10-16 165 views
-5

是否有這個PHP標籤中的echo「example」和「example」是否有區別?

<?php 
    myCode(); 
    echo "Example"; 
?> 

<?php 
    myCode(); 
?> 
Example 

這有區別嗎?

在性能方面什麼是最佳選擇?

我已經完成了基準印刷20000000次「示例」。我已經從CLI執行腳本,而不是通過HTTP請求(Centos 7 64bit)。

使用 「回聲」:153.06723901367sec

使用HTML:155.80555395508sec

+0

你是什麼意思**意見**? – Swellar

+5

沒有實際區別。去任何更可讀的。 – JJJ

+0

@ shashi我不理解:兩個作品。我想知道是否有差異(性能,系統調用,ecc)。爲什麼你們都在倒計時? – TheDeveloper

回答

5

對於所有務實的宗旨,沒有,目前還沒有相關的差異。在這兩種情況下,您的腳本輸出都將是「示例」。在這兩種情況下,myCode()都是在之前執行的。

事實上,兩種情況下的OPCodes都是相同的,因爲PHP會迴應<?php標籤之外的所有內容。它基本上只是一個隱含的回聲。

從技術上講,生成的OPCodes的方式將有所不同,但這對性能沒有影響。大多數<?php標籤以外的任何內容都被解析器視爲T_INLINE_HTML。然後,這是converted to an echo in the abstract syntax tree

| T_INLINE_HTML { $$ = zend_ast_create(ZEND_AST_ECHO, $1); } 

ZEND_AST_ECHO

case ZEND_AST_ECHO: 
APPEND_NODE_1("echo"); 

然而,你的目標應該是從你的意見和模板儘可能良好的邏輯,因爲它很容易導致意大利麪條的代碼,如果你別。作爲一個經驗法則,函數不應該回顯,而是返回字符串。大多數框架只回顯一次:在呈現響應時的請求結束時。

既然你提到的「意見」和MVC:MVC中的視圖不一定是一個模板,但是從模型中的特定數據塊的具體表現。它可以是最終呈現模板的代碼。如果這就是你想要的,你可能想看看一個模板引擎,比如Twig(儘管PHP本身就是一個模板引擎)。

+0

是的。我通常在PHP中使用Smarty,在JS中使用Handlebar。這只是一個關於表演的問題,我從來沒有像意大利麪代碼那樣在邏輯中使用視圖:) – TheDeveloper

+1

@TheDeveloper性能明智,沒有相關的區別。此外,每當詢問性能時,請在自己的應用環境中爲自己尋找一個幫助和基準,以獲得有意義的數字。 – Gordon

+0

好的,所以我會做一個基準測試。 – TheDeveloper

-2

是的。第一個是PHP,第二個是HTML。

在第一種情況下,你可以這樣做:

<?php 
$var = 1; 
echo "Example " . $var; 
?> 

第二種情況$var在HTML所以會被忽略不確定。

<?php 
$var = 1; 
?> 
Example $var 

如果你想使用該變量在HTML,你就需要重新回到PHP即

<?php echo $var; ?> 

這是我的經驗,喜好的東西,也有一些網頁是大多是HTML可以這樣寫。但是,如果我正在編寫PHP,我更願意堅持使用PHP,而不是在兩種語言之間反彈。我不知道你可以用HTML編寫的任何你不能用PHP編寫的東西。它使得難以調試的令人討厭的代碼成爲可能。
此外,還存在HTML標題的問題(請參閱PHP header()函數)。

+3

兩種情況下的OPCodes都完全相同。 – Gordon