2008-11-20 69 views
10

我一直在尋找關於如何佈局PHP代碼的一些指導。我已經發現了一些很好的參考,如以下幾點:PHP編碼標準

http://www.dagbladet.no/development/phpcodingstandard/

this question對SO。

然而,沒有一個能完全達到我特別想知道的東西,那就是HTML和PHP的集成。例如:

  1. 是否可以擁有一個以HTML標籤開頭的PHP文件,並且只在需要時插入PHP?或者你應該只有一段包含所有內容的php?
  2. 如果你有一段PHP代碼的中間是一組echo,只輸出一個固定位的HTML,是不是更好地打破了PHP,只是直接把HTML?
  3. 函數應該全部在專用的php文件中定義,還是可以在一個文件的頂部定義一堆函數並稍後在同一個文件中調用它們?

可能還有其他問題想問我,但是我真的在找人指點我一些網上資源,它提供了關於HTML和PHP應該如何組合在一起的一般想法的指導。

+0

這兩個鏈接都已死亡。 – CXJ 2013-02-15 23:07:30

回答

6

這些東西真的沒有單一的通用標準。在這個意義上,大多數語言比PHP更具限制性。

在接下來的幾年裏,出現了很多所謂的框架,除了其他內容之外,它們還定義了一系列規則,從命名文件的放置位置到代碼應遵循的風格。有幾個框架,所以你不能真正選擇一個並稱之爲標準。但是,大多數框架都有一個共同的子集。例如,大多數遵循PEAR Coding Standards的一些變體。

8

結合編程代碼和輸出數據(包括HTML)是恕我直言,這是一個非常糟糕的主意。我所知道的大多數PHP專家都使用模板引擎,例如Smarty來幫助保持兩件事情的分離。

+1

lalala ... guru dun使用smarty來分離HTML和PHP代碼 – ajreal 2012-10-09 03:25:24

4

我通常會嘗試並遵循由語言核心庫設置的標準....哦等等。

說真的 - 你應該試着在任何Web應用程序中遵循MVC pattern,因爲它幾乎是標準的做法,不管語言如何。在PHP中,這可以通過將index.php作爲您的控制器並通過文件分離數據邏輯和表示來快速實現。這個小小的步驟至少可以讓您在您選擇的時候將您的代碼移至全功能框架。

3

儘可能使用模板引擎。如果你還沒有學會一個,或不想開銷(這是最小的),使用使你有快速和骯髒的模板做法:

不顯示任何
  • 功能已在沒有地方顯示內容的文件。
  • 打印變量,而不是HTML。每當輸出HTML時,跳出PHP並使用print語句編寫HTML以處理所需的任何小細節(表單操作,控件ID等)。請記住,當您包含一個打破PHP內容打印內容的文件時,將會像在主文件中那樣對待它。因此,您可以創建包含PHP文件的簡單模板,這些文件將在正確的位置打印變量。你的index.php(或其他)完成所有的實際工作,但所有的顯示都是由輔助「模板」完成的。

許多PHP教程混合邏輯和顯示代碼。花了我多年時間纔打破了我鼓勵的壞習慣。根據我的經驗,你不能在PHP中分離太多東西,如果你不打它,熵會把你拉向混合代碼。

+0

我認爲php本身就是一個模板引擎...您可以在沒有添加smarty等的情況下生存下來。我只會看到類似的東西,如果我得到第三方在線編輯模板等,我想限制他們可以做的事情。 – starmonkey 2008-11-21 04:25:59

2

編碼標準應該不僅僅是如何佈局你的語法,但遺憾的是,他們傾向於使用PHP。

FWIW,phc將很好地打印您的Zend風格的代碼。

0
WHAT ARE CODING STANDARDS? 

Coding standards (also sometimes known as ‘Coding Conventions’ or ‘Coding 
Rules’) are a set of guidelines that a group of developers stick to, to ensure 
that they are all essentially 「singing from the same hymn sheet」. It means 
that they all code in the same format and therefore, regardless of who is next 
to work on a particular bit of code, the syntax and formatting used will be 
instantly familiar. 
Naming conventions 

使用正確的命名約定被認爲是很好的做法。有時程序員傾向於使用X1,Y1等作爲變量,並忘記用有意義的替換它們,造成混淆。

爲了防止浪費時間,在我們處理真實數據時,通常認爲在代碼中使用描述性名稱是一種很好的做法。

示例:用於將重量作爲卡車參數的變量可以命名爲TrkWeight或TruckWeightKilograms,而TruckWeightKilograms是更優選的變量,因爲它可以立即識別。請參閱CamelCase變量的命名。