2011-01-13 82 views
10

根據是否輸出HTML,我看到的一些PHP代碼中充斥着「<?php」和「?>」標籤。這是否有任何性能優勢,而不是使用echo來編寫HTML?當代碼通過<?php標籤不斷在代碼和HTML之間切換時,它使得代碼非常難以閱讀。大量使用PHP的「<?php」標籤

請注意,我不只是在談論偶爾的切換。我目前正在查看的代碼(螳螂bt源代碼)讓我頭痛,因爲它正在切換的次數。非常非常難以閱讀。我想知道他們是否有這樣做的理由?

+4

除非你是Facebook,否則不是性能問題。 – 2011-01-13 16:06:51

+2

當頁面大部分是HTML時,一致意見(無論如何都是微薄的)似乎是大量使用回聲是不好的形式。另一方面,如果頁面沒有將控制邏輯和業務邏輯與顯示分離,那也被認爲是不好的形式。我曾經聽說過,'echo'的開銷與切入和切出''塊的開銷相差無幾,但找不到您的參考。 – RobertB 2011-01-13 16:14:11

+0

無論天氣如何,你應該仍然傾聽並學習Facebook使用的方法,以及許多其他大型網站。 – RobertPitt 2011-01-13 16:18:43

回答

17

至於可讀性去,我寧願看到:

<ul> 
     <?php foreach ($items as $item): ?> 
      <li> 
       <a href="<?php esc($item->url)?>"> 
       <img src="<?php esc($item->icon)?>"/> 
       <?php esc($item->text)?> 
      </li> 
     <?php endforeach; ?> 
    </ul> 

比:

echo "<ul>"; 
    foreach ($items as $item) 
    { 
    echo "<li>"; 
    echo '<a href="'.esc($item->url).'">'; 
    echo '<img src="'.esc($item->icon).'"/>'; 
    echo esc($item->text); 
    echo '</li>'; 
    } 
    echo "</ul>"; 

不僅如此,但後者可以讓你選擇的IDE處理HTML語法和格式(告訴你,例如,</a>丟失)。所以,除非在短小的HTML之間進行更多的操作,否則<?php可能更可取。

編輯:至於性能,任何認真的代碼速度的人都會激活一個緩存預編譯器,將兩個版本歸結爲完全相同的東西。

0

儘管就代碼運行時間而言,這不會產生任何明顯的影響,但認爲這是「性能」應該計算的唯一位置的想法是荒謬的。開發人員花錢。所以清理這一切是一個性能提升!你自己的表現!

這樣做。

0

PHP提供了一些非HTML提供的功能,例如循環。因此,如果您必須在代碼中多次使用循環,則必須在php標記和HTML之間切換。此外,PHP可以幫助您實現HTML不允許的會話控制。因此,重要的是要在HTML

嵌入 PHP簡而言之,使用我們不得不使用PHP或其他語言的附加功能

2

原因,它可能是這樣的是這樣的情況:

<?php if($logged_in) { ?> 
    <span class="x">Welcome, <?= $_SESSION['user'] ?></span> 
    <a href="logout.php">Logout</a> 
<?php } ?> 

相反的:

<?php 
    if($logged_in) { 
     echo "<span class=\"x\">Welcome, " . $_SESSION['user'] . "</span>"; 
     echo "<a href=\"logout.php\">Lougout</a>"; 
    } 
?> 

有少轉義字符的擔心。

3

除了初學者腳本之外沒有任何理由,只是試圖在沒有任何架構思維或計劃進入系統的長期運行的情況下將結果導入頁面。

你應該做的是將你的設計從邏輯php代碼中分離出來,設計編譯應該在腳本運行時結束時完成。

如果您重新設計應用程序我肯定會建議您從一個框架開始,因爲框架會強迫它的設計帶來壞習慣。

從codeigniter開始,創建一個簡單的博客,瞭解如何連接/插入/選擇/更新數據庫,瞭解如何處理會話,瞭解控制器以及創建控制器的原則。

當你有一個體面的遊戲後,開始從遠處看代碼或設計的不良編碼應用程序,但它究竟做了什麼,它是從數據庫中獲取結果嗎?有一個用戶系統等等等等。

然後開始實施應用程序的基礎層,如上所述,一旦您設計了數據庫,您就可以開始構建模型以在應用程序中從數據庫中獲取數據,開始創建基本視圖文件,其中包含樣本,並將其重新編碼到新應用程序中,同時牢記編碼的結構和清潔程度。

希望這可以幫助你開始遷移,因爲我當然不建議你繼續使用這樣的應用程序。


@米奇

事件想你的代碼,第二部分是清潔其仍與應用程序的其餘部分,它應該像這樣結合你的觀點:

<html> 
    <?php $this->load("segments/head"); ?> 
    <body> 
     <?php echo $this->wrap("span",$this->link("Some Linke",$this->var("homepage"))) ?> 
    </body> 
</html> 

一組專用的視圖防止它與主邏輯交互的方法,這將被包裝在一個對象中以防止範圍,只有對象應該能夠訪問主邏輯。

0

我沒有統計數據來支持這一點,但我的理解是,「關閉」PHP輸出HTML而不是使用echo「」效率更高。原因在於,當你通過echo標籤運行你的html時,你將PHP解析出來顯示出來,而把它放入doc本身就可以讓瀏覽器顯示它而不必讓PHP解析它。

當我做了ColdFusion的開發,我記得聽說過標籤的情況。

0

我更喜歡使用<?php?>,因爲它更容易閱讀HTML,但如果性能損失很小,則會更容易 。我已經用echo編寫了HTML ,但在HTML中閱讀和發現問題非常糟糕。