2008-12-12 138 views
7

我已經閱讀了很多流行的開源PHP項目標準手冊。PHP - 函數/變量命名

很多強制變量空格強調下劃線,並強制執行camelCase。

全局函數和變量的名稱應該與類方法/屬性的名稱不同嗎?

我知道最重要的是一致性,但我想聽聽這方面的一些想法。

你會推薦什麼?

回答

13

我覺得camelCase的輸入有點令人愉快,因爲我覺得下劃線有點尷尬。

請勿使用全局變量。

我避免了PHP中的程序編碼,我發現OOP更易於組織。此外,PHP中已經沒有足夠的東西在它的全局名稱空間中了嗎?

一般我試着堅持:

  • 類是StudlyCaps單數或複數名詞酌情:Item,,DBItems
  • 變量是小寫的名詞,單數還是複數取決於他們持有什麼:$column$name
  • 常量是獨特的大寫名詞:DEBUGTYPE_FOO
  • 方法是駝峯,並與數動詞(getperformdo),後接名詞(單數或複數)開始描述它運行在什麼或返回(getThing()getThings()

這絕對取決於關於你的代碼。如果我編碼PHP或PEAR,我使用camelCase。如果我在做Python/Django,我使用under_scores。如果我正在寫ELisp,我使用虛線分隔符。

+1

同意,我正在學習面向對象和靜態類的進展(將所有字符串格式化程序等移出全局名稱空間) – alex 2008-12-12 04:41:37

0

是的,最重要的是一致性。如果你是唯一的開發者,堅持一種方法。如果您正在與一個團隊合作,請與其他團隊成員交談。區分全局變量,函數/方法和類將使讀取代碼更容易。對於一些人來說,camelCase比use_underlines更容易,所以你的團隊需要討論選項並選擇一種風格。

0

注:我用下劃線爲我的MySQL table_names,我使用UpperCamelCase爲MySQL字段名稱:

通常我使用$ lowerCamelCase變量名和類屬性,但如果它包含一個字段的值,我使用$ UpperCamelCase字段名稱,或者如果它是一個表中的數據數組,我將使用$ table_name。通過這種方式,我可以很容易地使用grep來獲得SomeFieldsome_table,並找到指向它的所有內容。

你不必使用這個確切的系統,但能夠搜索字段或表的所有引用是一個巨大的好處。

2

在PHP本身中,幾乎每個本地函數都是用下劃線分隔的。文檔中的大多數PHP代碼示例都是用下劃線分隔的。

在大多數語言中,我認爲Camel或Pascal框架更合適,但我認爲在PHP中使用下劃線分隔有明確的歷史記錄。

0

我以前更喜歡使用camelCase,但爲了在更大的應用程序中保持一致性,我採用了CodeIgniter的樣式指南。

即使你不使用他們的框架,你可以欣賞走進界定清晰,全面的方式工作:http://codeigniter.com/user_guide/general/styleguide.html

1

Zend Frameworks naming convention(這是基於PEAR)可能是最接近你來到一個標準在PHP世界中。就我個人而言,我傾向於使用lowercase_underscore作爲變量名稱,但除此之外,我主要遵循ZF的慣例。

0

我會推薦閱讀PEAR Coding Standards

我就這一個本星期早些時候寫道。由於PEAR是官方PHP擴展和應用程序庫,它可以被認爲是該語言的官方編碼標準。