我最近接触到 PHP 中的 Traits,并试图理解它们。在我的研究中,我偶然发现了这个 Stack Overflow 问题:Traits vs. Interfaces。被接受的答案提到了以下内容:
接口定义了实现类必须实现的一组方法。
当使用 trait 时,方法的实现也会随之而来——这在接口中不会发生。
到目前为止,这听起来和接口与抽象类之间的区别完全一样。所以这引发了一个后续问题:
- Trait 和抽象类在 PHP 中有什么区别?
我知道我只能从一个抽象类扩展,而另一方面可以使用任意数量的 traits。但这真的是唯一的区别吗?我仍然不完全理解 traits 及其用法。