2011-04-02 123 views
2

我只是想知道它是否正常嵌入在HTML中的PHP,或者它被認爲是髒/不專業。例如考慮以下幾行:在HTML中嵌入PHP代碼?

<? if($photo == 0) { ?> 
    <div class ="reminder">Hey <?=$name;?>, You don't have any photo. </div> 
<? } else { ?> 
    <div class ="ok">Do you want to change your photo? </div> 
<? } ?> 

這樣的代碼是否正常?如何以乾淨/專業的方式完成類似的工作(沒有PHP框架?) 謝謝。

+3

嘗試使用<?php而不是<? – Sourav 2011-04-02 08:13:53

+0

不要嘗試使用'<?php'而不是'<?',你當前的語法是好的 – 2011-04-02 09:31:43

回答

3

只要你把程序的邏輯保存在html之外,就沒問題。例如,您需要將其混合到您的模板中。像smarty這樣的模板引擎用<取代{$ myVar}? php echo $ myVar; ? >(簡單地說),所以不可能完全避免它。但事情像

<?php 

include "db.php"; 
connect_db(); 

// check login 

echo "<html>< head><body>..."; 

?> 

是不是好的做法,因爲你混都在一起:程序邏輯(登錄檢查,DB-東西)和輸出(回聲HTML)。只要看看MVC,並牢記「關注點分離」。

你的例子看起來不錯,因爲你只需要你的html中的邏輯來直接控制輸出。但計算$照片的價值,取決於一個數據庫條目,例如,不會在你的HTML,因爲這是程序邏輯。輸出(HTML)和邏輯應該一直分開。

0

我儘量保持這個最低限度,因爲我發現它更難調試所有的 <?在代碼中流動(WordPress的主題大師這樣做很多)

1

這是非常正常的,不管它是好還是不好是一個完全獨立的主題。這完全取決於您項目的規模和您對可維護性/靈活性的要求。

如果這是一個小項目,只需做你必須完成的任務。然而存在一個問題,在沒有框架的情況下開發它變得很笨重。這是非常主觀的,因項目而異,但這是一般原則。

0

對此會有很多意見。混合HTML和PHP可能會變得非常混亂,但這看起來很好。許多專業人士就是這樣工作的。如果它適合你,那很好。

0

爲了使其更具可讀性,我傾向於將括號保留在單獨的行中,以便您可以確保能夠輕鬆找到它們,但那只是我。

+0

在模板中試一下,你會發現它只是浪費空間 – 2011-04-02 09:29:13

1

在模板中使用PHP是可以的,但許多人更喜歡使用模板語言,因爲它強制分離並確保您不會用大量PHP填充模板。如果你確實下了模板路徑TwigSmarty是相當不錯的,因爲它們將模板編譯爲PHP來加快速度。

如果您在您的模板中編寫PHP,請嘗試遵循一些最佳實踐編碼標準,以保持整潔。例如:

  • 使用完整的<?php標記兼容性。
  • 在編寫任何循環而不是大括號時,請使用冒號。要結束語句,您需要明確地將其寫爲endforeach/endif/endwhile/etc。這使得PHP模板更具可讀性。
  • 如果你有很多邏輯將它移入外部PHP文件,以保持模板中的PHP短而易讀
  • 如果PHP標籤中只有一條PHP語句,則不需要用一個分號。再次,有助於可讀性

一個例子:

<?php if ($photo == 0): ?> 
    <div class ="reminder">Hey <?php echo $name ?>, You don't have any photo.</div> 
<?php else: ?> 
    <div class ="ok">Do you want to change your photo?</div> 
<?php endif ?> 

多見於:

1

的,你可以用智者templete .. ..它提高了喲烏爾編碼風格和作品快...查看smarty和嘗試,它的真正真棒

+0

你能否提供smarty代碼示例事情? – 2011-04-02 09:32:29

0

有從傢伙的答案叫alexn
說不上來爲什麼他刪除它,它看起來最好的回答我,所以,我只有重現它:

我會說這是要走的路。您 有一個很好的,清晰的PHP 和HTML的分離。

這裏的另一種選擇:

<? if($photo == 0): ?> 
    <div class ="reminder">Hey <?=$name?>, You don't have any photo. </div> 
<? else: ?> 
    <div class ="ok">Do you want to change your photo? </div> 
<? endif ?> 
1

從我已閱讀無論是工作,但大多數人只是使用echo語句小,有條件的HTML。