0
我爲我的項目創建了一個註冊表模式,它可以實例化或獲取對任何對象的現有引用。替代將相同參數傳遞給每個函數
但是,現在我發現自己必須將$registry
傳遞給項目中幾乎所有的函數和構造函數,因爲它們中的大多數都需要自己實例化其他類。這本身並沒有那麼糟糕,這正是註冊管理機構應該做的事情,但我想保留我的功能更加「純粹」,只需要獨特的參數。
我可以將類擴展到具有$registry
對象的父類,但由於我們正在處理PHP,並且僅限於只擴展一個類,所以這不是一個好的解決方案。
下面是一個例子來說明它更好。
Class controller {
__construct($registry,other parameters) { check conditions; addView($registry); }
addView(viewObject($registry);
}
任何想法保持設計更優雅,而不是通過$registry
所有的時間?
如果一個對象需要一個註冊表,那麼它需要一個註冊表。如果你在做DI(你應該),那麼你必須在某個地方傳遞它。如果你唯一擔心的是你基本上在所有這些類中重複相同的構造函數......我並不認爲這是一個大問題。 – deceze 2014-09-26 12:00:24
我在做DI,是的,我唯一擔心的事情是,我的大部分函數的參數(不管是構造函數還是不是)都有$註冊表。擔心這是一個糟糕的主意,那麼稍後改變它就太晚了。如果這被認爲是設計項目的可接受的方式,並且沒有其他替代方案,那麼這個問題已經得到解答。 – Rob 2014-09-26 12:03:08