我正在OO PHP中的社交網絡類型項目工作,我不想使用現有的框架。做這個項目的主要目的是幫助我瞭解更多的東西。這是太多依賴注入通過構造函數的對象?
這個問題更多的是依賴注入。
比方說,我有這些類:
核心類 - 一些核心的方法做的東西在應用
配置類 - 負載現場配置的東西
數據庫類 - 連接到MySQL並做所有數據庫相關的東西
記錄器類 - 用於記錄錯誤和調試信息
驗證碼類 - 對形式的驗證碼
會話類 - 發起會話的開始,並添加,刪除,獲取會話變量在該應用使用
緩存類 - 類似於會話類,但對於緩存項(文件緩存,memcache,apc緩存。我甚至可能會將我的會話內容添加到此類中,因爲所有這些緩存都可以使用相同類型的方法)
上述所有類都很可能用於我的應用中的每個頁面加載(我可能錯過了更多類將在稍後添加)
現在除了需要注入大多數其他類的上述類之外,我還會有許多更多的類。我將有一個secion稱爲模塊,這將有這樣的東西......
賬戶類 - 創建新用戶,認證用戶,用戶登錄和退出應用程序,更新用戶設置,以及更多。
用戶類 - 顯示用戶的配置文件,顯示用戶在線,新用戶,所有的東西,以顯示該網站的用戶
論壇類 - 將成爲論壇的部分
博客類 - 在博客部分
照片類 - 所有的照片相關的東西
評論類 - 處理意見的相片和個人資料
將有更多這些類型的網站的不同部分的類。
上面列出的第二組課程將很可能需要將第一組中的大部分類注入到其中。
所以我應該使用註冊表來存儲第一組類中的對象,並將註冊表注入到第二組類中的所有類對象中?
或者我應該使用構造函數來加載它們?在這個例子中,會有7個對象注入其他類,這看起來很多。我是否在談論這個錯誤?
---編輯---
我知道Singleton模式的,但我不認爲這是我在這裏的最佳選擇
--- EDIT 2 ---
正如有些人所說,需要傳入多達7個對象看起來像是很多,這就是爲什麼我正在尋找建議。幸運的是,這個項目正處於起步階段,所以現在是改變結構的時候了。
一個例子是我的論壇部分的一個類。論壇類將需要訪問會話數據,可能的緩存數據,配置對象,數據庫對象。 AM我以這種錯誤的方式去做?
相關:http://stackoverflow.com/questions/2420193/dependency-injection-constructor-madness – 2011-01-18 20:49:15
刪除我的回覆,因爲你也提到它。使用註冊表模式。 – mhitza 2011-01-18 20:50:49
如果你的對象需要注入7個對象才能運行,我會挑戰這些類本身的底層架構。理想情況下,你應該只需要幾個對象。或者,依賴注入容器可能會緩解一些壓力。個人而言,我不是粉絲。 – CaseySoftware 2011-01-18 21:14:44