2013-08-07 57 views
0

我在PHP中創建了一個我想擴展的類,因此該類可以具有許多基本功能。問題是功能如此不同,我不想在一個類中混合不同的方法。由於組織和可擴展性,我更願意將它們邏輯分開。將功能擴展到對象PHP

讓我們想象一下,我有三大類:

類用戶{}

類跟蹤{}

類利斯特{}

用戶是代表現實生活中的主類目的。 無需考慮類的具體功能,Tracker和Lister都提供了必須在User中可用的方法,因爲它們是一種幫助器。如果我使用繼承,我將只能繼承一次,不得不創建許多類作爲「擴展」,我將使用類User來添加和完成層次結構。有沒有辦法避免這樣做?我的意思是可以用其他類的功能來擴展User類,而不必像我剛纔所說的那樣知道PHP不支持多重繼承?

謝謝!

+0

這裏擴展User類是沒有的單一職責原則一個很好的例子:這取決於跟蹤和李斯特做,考慮依賴注入 –

+1

創建一個接口,讓每個類實現它。 – knittl

+0

Lister和Tracker的方法概念上是用戶會做的事情嗎?或者它們是用戶擁有的東西? – Flosculus

回答

0

它的類可以幫助或修飾User類,它可能會更好地使用修飾器模式的實現。

$user = new User(); 
//default behavior 
$user->getMethod(); 

$tracker = new Tracker($user); 
//enhanced behavior 
$tracker->getMethod();