php中interface和trait的异同?
trait trait_name{
public function function_name();
}
interface interface_name{
public function function_name();
}
- 在学php, 没实际经验, 感觉interface和trait很类似, 都是一种特殊的类.
- 等到需要的时候, 在当前类中写清具体方法, 在通过implement, extends, use等去调用它们.
- 这两种设计有什么精妙之处? 有什么区别呢?
- 看了下各种回答, 觉得挺有道理. trait和interface恰好相反,interface关心的是接口,把控全局, 把实现和细节丢给其他人,而trait完全不关心接口(约定),trait内部写好具体的功能细节, 其他人谁要用use引入就行. (正所谓复用代码). 而trait的"多继承", 在一个类中引入多个trait, 又进一步强化了"复用代码".
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
interface和trait 是2个不一样的东西
interface 用来定义接口标准,都是抽象类。比如你可以定义一个 people 的interface ,里面规定了只能定义一下 people 相关的方法。
trait 的是为了解决多继承问题的,因为php 不支持多继承。
完全是两个东西
interface是为了规范标准,在强类型语言里非常有用。
trait是为了代码复用
不知道你是从何得知的,
请多看文档