2010-01-19 99 views
0

可能重複:
When should I use static methods in a class and what are the benefits?靜態函數/類..推理?

我在PHP工作現在。

我正在處理兩組函數。

我有一個由日期處理函數組成的類。

在這個類中,我不需要屬性,因爲每個函數/方法或多或少都是一個實用程序。正因爲如此,我使得我的班級的所有功能都是靜態的。

我從這裏有幾個問題。

1)使用靜態方法有什麼好處?我知道有更低的處理開銷,因爲沒有一個對象。我也聽說這是微不足道(取決於)。

2)除了公用事業之外,還有哪些其他類型的功能/方法可以成爲「靜態」的好選擇?

感謝

+2

請在下一次詢問之前進行搜索: http://stackoverflow.com/questions/2080150/when-should-i-use-static-methods-in-a-class-and-what-are-the - 好處 http://stackoverflow.com/questions/1299712/why-should-we-use-static-calls-in-php http://stackoverflow.com/questions/1316800/when-to-use-static -modifier-in-php – hobodave 2010-01-19 21:33:19

+0

你的問題讀起來就像你處於與PHP一樣的開發/知識水平。不能推薦Kevin Skoglund的「PHP和MySQL - 超越基本」 - 從Lynda.com相當便宜。真的幫助我理解公共/私人/靜態方法的概念。 – suitedupgeek 2010-01-19 21:48:01

回答

5

採用靜態方法的關鍵概念是它們綁定到類,而不是一個實例的類的。一個好的指導原則是**任何需要狀態的東西都不適合靜態使用*。

實用方法絕對適合靜態使用,因爲它們通常很短而且不需要任何狀態。其他一些指導原則可能是:

  • 輸入和輸出不相互依賴任何東西。
  • 該方法沒有上下文,也就是說,將它與對象的實例相關聯是沒有意義的。
  • 方法/變量不需要區分對象,只需要一個聲明即可。這主要適用於靜態類變量,例如跨所有實例化對象共享的計數器。