2009-10-16 115 views
1

如果我可以要求答案不要指向框架或其他庫,我將不勝感激。我意識到這些,並且是在基於快速小黑客經驗的更多答案之後。混合使用PHP和html

開始與一些基本的HTML

<html> 
     <head> 
      <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
      <title>Page Title</title> 
     </head> 
     <body> 
     // something is going to happen here, could be more html, or php 
     </body> 
</html> 

比方說,你將有數百頁,當然,你要這個模塊化的方式有更少的代碼重複。

我所看到的,使用和爭論很多的一種策略。

的基本方法包括:

的header.inc.php

<html> 
     <head> 
      <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
      <title>Page Title</title> 
     </head> 
     <body> 

footer.inc.php

 </body> 
</html> 

所有數百PHP頁面中的存根:

<?php include 'header.inc.php'; ?> 
    // html or other php can go here 
<?php include 'footer.inc.php'; ?> 

找人它更加花哨,並且有一個var.inc.php,你可以設置$ page_title並且在第一個包含前面,節省了從數百頁中編輯它的時間。

功能的方法:

show.inc.php

function display_header($page_title) { 
    echo " 
    <html> 
      <head> 
       <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
       <title>$page_title</title> 
      </head> 
      <body>"; 

} 

您頁腳做同樣的,我懷疑你的想法。我知道很多人在這個時候都在思考對象,我也想避免這個討論。

考慮您要教一個非常年輕的孩子的一些原則,或者你正在試圖讓設計師進入某種形式的現代年齡。

無論哪種方法,你開始運行到你要去哪裏看在瀏覽器的HTML和PHP的輸出情況。對輸出到瀏覽器的源輸出有一個非常清晰的縮略圖和結構。大多數情況下,查看網站的來源,我看到的HTML很糟糕。所有的一行,或不同形式的縮進。

如何用簡單的方法你解決這個問題?

這display_header()函數將要吐在\ T的所有的地方,或者空間,這取決於你的編輯器,這將會使渲染輸出一個爛攤子。

有此選項:

function display_header($page_title) { 
    echo '<html>'; 
    echo '<head>'; 
    echo "\t" . '<meta http-equiv="Content-type" content="text/html; charset=utf-8" />'; 
    echo "\t" . '<title>' . $page_title . '</title>'; 
    echo '</head>'; 
    echo '<body>'; 

} 

然後,你進入的情況:

echo '<table>'; 
foreach ($variable as $item) { 
     echo '<tr><td>' . $item . '</td></tr>'; 
} 
echo '<table>'; 

echo "\t" . '<table>' . "\n"; 
foreach ($variable as $item) { 
     echo "\t\t". '<tr><td>' . $item . '</td></tr>' . "\n"; 
} 
echo "\t" . '<table>' . "\n"; 

而現在,你剛纔真的讓亂七八糟的你的PHP。所以我開始考慮輸出緩衝區,並且我會完全用這個概念讓設計師失望。但我剛剛混合更多的HTML與PHP,我會感到自豪。

老實說,我從來沒有能夠用這個東西來解決起來:

<?php foreach ($variable as $item) { ?> 
.... 
<?php } ?> 

兩個產生更好的HTML生成的,但對我來說,這也產生了一個更復雜的PHP文件。非常基本的問題,我相信會有一些強烈的意見,並希望推動框架和OOP。我理解這些方法,但同樣,我正在尋找最好的建議,希望爲那些永遠不會熱衷於編程的人提供一些工具,並且希望能夠幫助他們提高工作效率。

+1

目前尚不清楚你的問題*是*。關於HTML源代碼縮進的一點是有點意思,因爲HTML並不關心這一點。 – pavium 2009-10-16 08:06:51

+1

這裏有什麼問題嗎?或者這只是一個錯誤的博客文章? – cletus 2009-10-16 08:12:42

+0

這是一個很大的寫作本質上要問「我如何輸出漂亮的HTML代碼?」 – dnagirl 2009-10-16 18:33:30

回答

6

忘記編寫PHP時HTML輸出的縮進。否則,你會花費太多時間來擔心完全無關緊要的事情。

如果您需要清理HTML輸出以方便設計人員閱讀,請通過Tidy運行。如果這看起來效率低下,記住你只需要在開發中做到這一點,而不是在生產中。

1

當你的代碼變得更復雜,您的設計更復雜,我想你會發現,模板就是答案。最後,演示文稿應該與邏輯分開,這是MVC模型的核心。

我個人很喜歡Smarty

+0

我不知道我有多少可以得到他們使用的子語言的語法。它聞起來很像標籤冷聚變時代的東西。我需要更詳細的研究 這可能是錯誤的,但考慮聰明是如何工作的,必須有很多人聽到它。我相信它是非常緩存驅動的,但對於那些無法從緩存中讀取的頁面,本質上來說,有一船發現並替換了正在發生的事情,我敢打賭這些都是非常正規的驅動,所有昂貴的東西。 再次感謝您的建議,我確實會給它一個堅實的閱讀,看看我想出了什麼。 – user170579 2009-10-16 20:18:24

1

我想你應該你所厭惡重新評估到最後一個片段。 PHP作爲一種模板語言是最好的。當您以這種方式使用它時,您可以輕鬆進行設計模型並將其轉換爲動態頁面。你也可以使用標準的HTML工具,看看ZenCoding作爲我正在談論的一個例子。您可以有適當的語法突出顯示和所有其他的好東西。你也可以輕鬆地維持一些縮進和一致性的表面,而不需要任何額外的努力。

現在我明白了由於事情變得凌亂和醜陋而感到的緊張感。關鍵是將複雜的邏輯從模板中移出到單獨的純PHP文件中,以便模板文件比PHP更像HTML。 iddqd建議使用Smarty作爲模板語言,但我從來不喜歡Smarty。我相信它最終只是一個毫無意義的重定向而不是有用的抽象。

在所有的編程語言中,PHP是最好的模板語言之一。沒有必要顛覆它像任何其他編程語言。

+0

謝謝先生。我想我將不得不習慣最後一個片段。我在wordpress模板中看到了很多。我很想將代碼邏輯與HTML表示完全分開,並且你很可能是對的,使用<?php foreach ...?>是一種很好的方式。 我認爲我最大的問題是看到,那只是殺了我:)我會看看zencoding的東西,我會再次看看Smarty,雖然我最後一次看它,但我非常感覺同樣的方式如你所做的那樣。再次感謝你。 – user170579 2009-10-16 20:13:33