Trait方法怎么在PHP中使用-创新互联

这篇文章给大家介绍Trait方法怎么在PHP中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

成都创新互联公司是一家专业提供富蕴企业网站建设,专注与成都网站制作、成都网站设计、H5技术、小程序制作等业务。10年已为富蕴众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

PHP中的Trait用法:


Trait方法怎么在PHP中使用

问题

当我第一次使用的时候, 因为之前一直使用抽象类, 或者定义内部对象, 然后调用内部对象中的方法, 所以我当时有了以下几个问题:

1.能否引入多个, 如果可以的话, 同名方法如何处理

2.引入方法与现有方法重名时, 如何解决

3.能否定义抽象方法, 因为有些方法需要知道使用时的情况, 在抽象类中, 这种情况一般通过调用抽象方法来解决

4.能否定义字段

5.能否将字段或方法定义为静态

6.能否对方法进行权限控制

答疑

1. Trait 可以引入多个, 多个trait中存在同名方法时, 需要指定使用哪个方法, 如下:

Trait方法怎么在PHP中使用

2.引入方法与现有方法重名时, 会优先调用类中已定义的方法, 其优先级顺序为: 当前类方法>trait方法>父类方法

3. trait 中可以定义抽象方法, 语法与抽象类相同

Trait方法怎么在PHP中使用

4.trait 中可以定义字段, 语法与类相同

Trait方法怎么在PHP中使用

5. 可以定义静态方法与静态字段

Trait方法怎么在PHP中使用

6. 可以进行方法权限的控制

Trait方法怎么在PHP中使用

7. 另外, 在trait 代码块中还可以引入其他trait代码块, 语法与类中引入相同:

Trait方法怎么在PHP中使用

总结

至此, 我发现了一个新的问题, 这个 trait 与抽象类有什么区别? 说什么代码复用, 这不就是多继承么? trait与抽象类功能上有区别么? 抽象类能干的, trait都能干啊.

思前想后, 我觉得区别还是有的, 虽然说他们两个看着很像, 功能相似, 但是正如抽象类与接口一样(虽然这两者不同, 接口不能定义方法), 接口更侧重于定义一组公共的方法, 一种规范, 而抽象类则侧重于将子类中公共的方法进行抽离, 提高代码的复用.

trait 与抽象类的侧重点也不相同

trait 侧重于定义共用的代码片段, 它并不管引用此片段的类是干什么的, 只要你需要, 就可以拿走去用, 简单说就是 trait 并不约束类的类型, 而仅仅定义方法

抽象类则不同, 既然你继承我, 那你干的事情肯定跟我是一样的, 不能抽象类是去与数据库交互的, 你子类去写脚本了. 所以抽象类相对 trait 更侧重于 类型的约束.

关于Trait方法怎么在PHP中使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


网页标题:Trait方法怎么在PHP中使用-创新互联
标题网址:http://hbruida.cn/article/doessd.html