2011-05-23 39 views
2

所以我有一個很大的類,我正在重構更靈活。大類配置,實現建議

遠超過100個INI文件中的可配置屬性(變量)。一些是開發設置,另一些是生產設置。

目前我使用環境標誌來拉取我需要的INI設置(開發或產品)。

所有INI字段都是強制性的,必須設置。 (目前爲此使用setter)。

那麼更有意義的是什麼?

  • 一個:保持當前的設置
  • B:移動到另一種類型的配置設置(如XML或東西)
  • 的C:將所有設置到腳本本身和除去INI解析和驗證代碼(setters)
  • D:建議?

獎金的問題:

我讀這個週末:http://berryllium.nl/2011/02/getters-and-setters-evil-or-necessary-evil/,想知道我怎麼可以在後面這種類型的發展模式,而是困惑,如何不設置使用的getter/setter功能必須填寫?我瞭解吸氣劑/定型劑的需求,並想知道我是否正確實施它們?

我將INI用於數據庫設置,驗證限制(認爲花費限制爲100美元但可以更改),大型陣列(像美國50個州的靜態值,但也具有添加美國領土的能力)

+0

C,因爲爲什麼浪費時間和精力在一些可以是簡單的PHP配置文件 – Robus 2011-05-23 15:07:35

+0

@Robus上,所以你說的是溝渠INI文件並且把類中的所有設置都移動了? – 2011-05-23 15:14:05

回答

2
  • 如果您想保留設置 可讀,保持當前設置或 移動設置成PHP腳本(但做 不是他們硬編碼到類)。
  • 如果 要提高性能 - 使用JSON格式或PHP腳本 - json_decode工作得更快,PHP腳本 工作更快,並且可以通過APC很容易緩存 。
  • 作爲變體,您可以解析設置文件 一次,並將所有 設置放入緩存(APC或memcache)中。

另外。我認爲沒有人在意,但我對吸氣劑和定型劑有我的看法:)
吸氣劑和固化劑不是邪惡的。封裝理念不僅僅隱藏領域,而且隱藏,以及班級的工作方式。Getters和setter可以在接口中聲明,所以你可以用另一個替換一個對象 - 這就是封裝的發明!

以Berry Langerak的文章爲例 - withdrawdeposit是setter。所有這些代碼都可以在setBalance方法中成功完成,幾乎沒有什麼會改變。所有這些檢查,比較 - 這是制定者的平常工作。

爲什麼公共領域是邪惡的?因爲對象不能控制它們的變化,因爲它們不能在接口中聲明。 Getter和setter可以做到,所以它是OOP的完美工具。

訪問者當然可以寫成愚蠢的,但這並不意味着他們是邪惡的。任何類中的方法都可以寫得很傻。

1

有趣的問題。

我高度懷疑所有這些變量在開發區域和生產區域之間可能會有所不同。不是你調試時可能改變的每個變量都必須存儲在配置文件中。

我會建議使用大多數變量的常量。 你有自動完成,大量的IDE選項,它很容易編輯。更不用說更多的邏輯將它們分解成不同的文件,然後解析大量的ini。

+0

我以前使用過常量,但是由於這個事實,項目需要非常可配置,我不想觸摸代碼,而是使用INI文件。至於Dev/prod是一樣的,我會非常不同意。我使用了多個數據庫連接,每個連接都有一個生產和開發服務器,以及生產和開發電子郵件別名,調試級別,日誌記錄級別等等。然而,我有一個共同的或共享的INI,其中這些值在產品和開發中都是相同的。 – 2011-05-23 15:18:57

+0

關於必須打開.ini文件並打開正確的常量文件,還有哪些更具可配置性?除了沒有獲得任何IDE功能之外,我沒有看到太大的區別,不能將它們輕鬆拆分,並且不得不將它們放置在公共目錄之外。 – 2011-05-24 06:39:46