假設您正在構建一個將在一天內成爲打包產品的Web應用程序,用戶希望能夠擴展和自定義該應用程序。可以選擇自定義類別但統一類名稱
它配備了包括含類PHP文件核心庫:
/library/
/library/frontend.class.php
/library/filesystem.class.php
/library/backend.class.php
現在,假設你要保持乾淨核心用戶無法修補。但是,您希望用戶能夠根據需要定製每個螺母和螺栓。
我現在的想法是創建一個自動加載機制,當一個類實例化,首先加載核心包括:
/library/frontend.class.php
然後,它切換到user
目錄,看起來是否有包括相同的名稱:
/user/library/frontend.class.php
如果存在,它也包括這一點。
顯然,用戶include必須包含一個類定義,它擴展了core include中的定義。
現在我的問題是,我將如何實例化這樣一個類?畢竟,我總是可以肯定有一個定義:
class frontend_core
,但我不能肯定是有
class frontend_user extends frontend_core
不過,我想能夠依靠的,實例化,一個類名稱,無論是否存在該類的自定義擴展。
有沒有一個聰明的方法,想法或模式如何實現這一目標?
當然,我可以寫一個簡單的工廠輔助函數,看起來對user
類,然後再爲core
類,並返回一個初始化的對象,但我真的想保持這個乾淨和簡單越好,因爲正如我所說,它將成爲一種包裝產品。
我正在尋找一種巧妙的技巧或模式,它儘量少用代碼,並儘可能少地引入新的功能。
如果沒有自定義,我想保留用戶目錄爲空,但另一方面,這是個不錯的主意。它爲用戶提供了簡單的入門點,甚至可以在空的類文件中使用代碼示例和解釋。我會考慮的。 – 2010-03-11 13:20:15
但是,當用戶不使用它時,它也增加了多餘的類以供加載,例如,當用戶選擇使用默認值時,User_Frontend加上Core_Frontend而不是Core_Frontend。 – Gordon 2010-03-14 12:45:11