2013-08-07 59 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();