素材牛VIP会员
php中trait的意义是什么呢?
 威***军  分类:PHP代码  人气:1595  回帖:12  发布于6年前 收藏

看过了一些trait的介绍,也在框架中看到了。但是感觉trait做的事情,用interface是不是也能做呢?

个人感觉每个trait实现的功能都非常集中,也非常轻量,这个很赞,但是相对的有些class可能要同时用好几个trait,而且假如同时继承了类,实现了接口,并且其中包含覆盖,那理清这个类的关系感觉会很困难,这是我最困惑的地方,当然也可能是我技术还不够。

但是既然出了这个语法,肯定还是有他的道理的,所以就想问一下,项目中使用trait的意义是什么呢?

 标签:php

讨论这个帖子(12)垃圾回帖将一律封号处理……

Lv6 码匠
zh***ni 职业无 6年前#1

有不少目的,我相信其他的答案会从各个角度提及。

我所知道的一个重要目的是:方便代码生成器的工作。

如果一个类的部分代码是生成器产生的,部分代码是自己写的,那么我们肯定希望生成器产生的代码在trait里,我们自己写的代码引用这个trait。这样如果生成器需要重新运行,自写的代码就无需任何变化。

这一点用继承也许也能做到,但PHP没有多继承。同时引用多个生成器产生的代码,只能依赖trait

这一点你可以看一下 C# 的“部分类”(partial class)。在目的上是很相似的。

Lv6 码匠
雪***儿 职业无 6年前#2

其实
trait
就是
解决多继承的问题。

上一页12下一页
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取