2012-07-11 130 views
0

我用我自己的土生土長的PHP框架,它在很大程度上基於大多來自梨和Zend但最近也有一些更好的組件來了在Composer是否與抽象類相反?

由於我的應用程序組件正在成長變得更難組件之間切換,我想知道是否有一種方法可以以不同的方式設計我的程序。在某種程度上,我可以使用像抽象類相反的組件。

我在想,應該有一種方法讓我創建自己的類,而這些類又反過來嵌入到pear或zend中,並像使用接口或抽象類一樣使用這些類。當然,他們會做實際的工作,我只會鏈接到他們。

假設如果我一直在使用pear Config/Lite,它只能用於ini和數組文件,現在我想切換到pear config或Zend config來獲得將數據保存到數據庫中的好處,然後在那裏應該是一個簡單的方法來切換而不改變我所有的代碼,因爲他們實現的是完全一樣的東西。

我在問,因爲我一直在使用Pears Net/URL/Mapper,這並不壞,但我發現了一些也會照顧到調度的事情,並且正在積極開發中。我相信這種情況會一次又一次地出現。

+1

這聽起來像你有一個理解接口的使用問題。 – zzzzBov 2012-07-11 17:16:53

回答

2

你想尋找像門面設計模式,或只是使用委託/組合。但是要小心,當你添加抽象層時,使用像facade這樣的東西會導致很多不必要的複雜性。我建議你閱讀一些php設計模式,尤其是對象的委託/組合,以便了解如何適合你的情況。

+0

我以前用過的作品,不知道它被稱爲作曲。門面設計模式是我一直在尋找的。謝謝。 – RoboTamer 2012-07-11 18:20:51

1

您應該爲此IMO使用組合。讓庫中的類暴露自己的公共接口,其餘代碼依賴於這些接口。如果您將某個組件的基礎從PEAR更改爲Zend,那麼確保所有原始公共方法仍然遵守之前的版本,並且您應該是金牌。如果你願意,你可以用interface這個關鍵字來形式化這些接口,但這已經超出了這個答案的範圍;)