可以include为啥还要trait?另外implements只能当一种契约遵守有意义吗?

感觉这两个功能并不是很必要,而且他们的功能,其他方式也能实现,为什么还要存在,有什么特殊情况一定要用到他们不可吗?

阅读 2.2k
2 个回答

1、在现代化的 PHP 项目开发中,已经很少显示的出现的 include ,如 @SevenOutman 所说,先基本都是使用 Composer ,来做管理,所有的都通过 composer 来进行自动加载,已经不再需要去手动的 include 。
2、 interface 和 abstract ,都可以达到约束的目的,在部分场景下, abstract 可能还占优势,但是他们并不冲突。
一个类可以 implements 多个 interface ,但是只能继承一个 abstract 。
3、同样的一个类可以 use 多个 trait ,但是只能继承一个父类。
4、在面向对象概念中,trait 相当于 mixin 不是必须的也不是标准的,但是他是对于一个语言的加分项,可以使得代码更加容易的组合和复用。

你是不是还没有开始用 composer?如果是的话,你可以不用管他们有啥用,到需要用的时候你自然会自己体会到。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题