我正在尝试研究使用特征的主题,但似乎无法得到确切的答案。
博客ircmaxell认为它们可能是“新的评价”,而我发现其他类似这样的网站,对它们的评价也不错。在我将其实施到我的项目之前,我想确保我了解它们如何正常工作。
例如:我有10个不同的类,它们全部扩展一个Parent,每个类有20个方法。在一半的类之间可能存在5种方法的重叠,因此将这5种方法抽象为特征是否有意义?特质的重点是可以将这些方法应用于需要它们的类,而不必通过将它们放在父类中来污染不需要它们的其他类,对吗?
// Why repeat myself?
class Parent {
public method1() {}
public method2() {}
public method3() {}
}
class Foo extends Parent {
public specificMethod1() {}
public specificMethod2() {}
public commonMethod1() {}
}
class Bar extends Parent {
public specificMethod1() {}
public specificMethod2() {}
}
class Baz extends Parent {
public specificMethod1() {}
public specificMethod2() {}
public commonMethod1() {}
}
// This way makes more sense
trait commonMethod1 {
public commonMethod1() {}
}
class Foo extends Parent {
use commonMethod1;
public specificMethod1() {}
public specificMethod2() {}
}
class Bar extends Parent {
public specificMethod1() {}
public specificMethod2() {}
}
class Baz extends Parent {
use commonMethod1;
public specificMethod1() {}
public specificMethod2() {}
}
是的,你是对的。当您需要某种PHP不支持的多重继承时,可以从特征中获得主要好处。因此,您可以组织一些应该在不同类中重用的,没有继承关系的代码。
例如:您可以拥有一个与Partent不相关的“其他”类,但是您仍然需要函数“ commonMethod1”,因此可以使用相同的特征
class Other {
use commonMethod1;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句