在PHP項目中,存在哪些模式來存儲,訪問和組織幫助程序對象?[關閉]在基于PHP的面向對象項目中,如何組織和管理輔助對象,如數據庫引擎,用戶通知,錯誤處理等?假設我有一個大的PHP CMS。CMS由各種類別組織。幾個例子:數據庫對象用戶管理用于創建/修改/刪除項目的API消息傳遞對象,用于向最終用戶顯示消息一個上下文處理程序,可以將您帶到正確的頁面顯示按鈕的導航欄類記錄對象可能,自定義錯誤處理等等我正在處理永恒的問題,如何最好地使這些對象可以訪問需要它的系統的每個部分。很多年前,我的第一個應用程序是擁有一個包含這些類的初始化實例的$ application全局。global $application;$application->messageHandler->addMessage("Item successfully inserted");然后我切換到Singleton模式和工廠函數:$mh =&factory("messageHandler");$mh->addMessage("Item successfully inserted");但我對此也不滿意。單元測試和封裝對我來說變得越來越重要,在我的理解中,全局/單例背后的邏輯破壞了OOP的基本思想。然后,當然有可能給每個對象提供它需要的輔助對象的許多指針,可能是最干凈,資源節省和測試友好的方式,但我對這長期可維護性有疑問。我研究過的大多數PHP框架都使用單例模式或訪問初始化對象的函數。這兩種方法都不錯,但正如我所說的那樣,我對它們都不滿意。我想擴大我對這里存在的常見模式的看法。我找實例,更多的想法和指針向資源從討論這個長期的,真實世界的視角。另外,我很想知道這個問題的專門,利基或簡單的奇怪方法。
3 回答

繁星點點滴滴
TA貢獻1803條經驗 獲得超3個贊
我喜歡依賴注入的概念:
“依賴注入是組件通過其構造函數,方法或直接進入字段的依賴關系。(來自Pico Container網站)”
Fabien Potencier撰寫了一系列關于依賴注入的非常好的文章以及使用它們的必要性。他還提供了一個很好的小型依賴注入容器,名為Pimple,我非常想使用它(github上的更多信息)。
如上所述,我不喜歡單身人士的使用。關于為什么Singletons不是好設計的一個很好的總結可以在Steve Yegge的博客中找到。
- 3 回答
- 0 關注
- 679 瀏覽
添加回答
舉報
0/150
提交
取消