2013-02-15 26 views
1

我可以在一個字符串中編寫HTML代碼並返回它,但它總是看起來有點混亂。有沒有更好的解決方案?更好的HTML內的返回函數?

例1 - 新線HTML

與HTML每一行新行。一種非常混亂的方式來編寫HTML代碼。

function my_function() 
{ 
    $html = '<div class="hello">'; 
    $html .= 'A very long text'; 
    $html .= '</div>'; 
    return $html; 
} 

實施例2 - HTML塊

仍然是一個混亂的方式來寫HTML代碼。另一個缺點是寫'引用'字符比較困難。

function my_function() 
{ 
    $html = ' 
     <div class="hello"> 
      A very long text 
     </div>'; 

    return $html; 
} 

實施例3 - ob_get_contents

我可以使用ob_get_contents。它將我的PHP與我的HTML分開,很好!但我已經讀過,這是糟糕的表現。

function my_function() 
{ 
    ob_start(); 
    ?> 
     <div class="hello"> 
      A very long text 
     </div>'; 
    <?php 
    $html = ob_get_contents(); 
    ob_end_clean(); 
    return $html; 
} 

問題

是否有另一種方式來保持HTML從PHP在一個不錯的方式?

+0

你可能已經想到了這一點已,但以防萬一 - 有一個原因,你不能有在模板中的HTML,並加載? – Mike 2013-02-15 14:51:46

+0

源代碼中的空白導致性能問題,有一個模板庫。但我不認爲你需要這樣的東西 – Sedz 2013-02-15 14:55:06

+0

@Grant Thomas由於HTML文件的大小會更大,因此不要在PHP中呈現瀏覽器上的HTML文件,您可以檢查谷歌頁面的速度。 – Sedz 2013-02-15 15:02:31

回答

1

您可以使用一種模板形式,其中您的HTML結構存儲在帶有佔位符值的模板文件中,您可以使用該模板文件讀入,並將佔位符值替換爲實際內容。

這樣,你只是在閱讀一個字符串,做一堆'替換'來轉換,並返回結果。

0

「是否有另一種方法可以很好地保持PHP中的HTML?」

  • 是 - 你應該閱讀有關MVC以及如何實現它的PHP
1

是,也不是,

任的3個例子遠遠形成目標(例如,使用Smarty)。 「保持php遠離html」。在他們之內,他們不會比其他人更好。

保持表示層與邏輯連接並不是一個好的做法。
這兩種解決方案都不是我們可以直接向初學者提出的。最簡單的學習曲線就是使用模板引擎,比如smarty。

http://www.smarty.net/

這將有助於你保持你的演示文稿從您的代碼有點遠。

但是人們普遍接受的策略是MVC將軟件分爲三層。模型視圖和控制器。本文給出了關於什麼是mvc專注於php的簡單解釋。

http://onlamp.com/pub/a/php/2005/09/15/mvc_intro.HTML

還有其他的架構和,許多人認爲更好,但這個是基礎,我相信實踐。

0

簡單的想法保持兩個相距:

//php function 
    function stuff(){ 
      $arr = array(); 
      $arr['text'] = 'A very long text'; 
      $arr['class'] = 'hello'; 


     return $arr; 
     } 

HTML頁面:

<html> 
<?php $thing = stuff(); ?> 


<div class="<?php echo $thing['class']; ?>"> 
<?php echo $thing['text']; ?> 
</div> 

</html>