php中关于traits复用机制的使用详解
Sep 08, 2017 am 09:37 AM提到 php 的代码复用,我们可能第一时间会想到继承,但是这种单继承语言一旦派生的子类过多,那么会产生一系列的问题,比如依赖父类、耦合性太大、破坏了类的封装性。那么有没有更好的方法来实现代码复用呢?
自 PHP 5.4.0 起,PHP 实现了另外一种代码复用的一个方法,称为 traits。
Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用方法集。Traits 和类组合的语义是定义了一种方式来减少复杂性,避免传统多继承和混入类(Mixin)相关的典型问题。
基础使用方法
Traits 的使用非常简单,只需要在类中使用 use 关键字即可。
1 2 3 4 5 6 |
|
优先级
简单来说 Trait 优先级大于父类方法,但是小于当前类方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Trait冲突问题
在使用多个 Trait 时,如果其中存在相同的方法名称,那么就会产生冲突。使用 insteadof 和 as 可以解决方法名称冲突问题
insteadof可以声明使用两个相同方法名称中的具体某个方法。
1 2 3 4 5 6 7 8 9 10 11 |
|
方法访问控制
使用 as 关键字我们可以对 trait 方法的访问权限进行修改
1 2 3 4 5 6 7 8 9 10 11 |
|
Trait嵌套使用
1 2 3 4 5 6 7 8 9 10 |
|
变量、属性、方法定义
Trait可定义属性,但类中不能定义同样名称属性
1 2 3 4 5 6 7 |
|
Trait支持抽象方法、支持静态方法、不可以直接定义静态变量,但静态变量可被trait方法引用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
对比javascript
这种 trait use 的使用方法大概和 javascript 中的 call 有点相似,都是把一个另外一个对象挂载到当前对象的执行环境当中。当然 javascript 是基于原型的语言。两者也没有可比性。仅仅是使用方法相差无几,有助于理解。
1 2 3 4 5 6 7 8 9 |
|
以上是php中关于traits复用机制的使用详解的详细内容。更多信息请关注PHP中文网其他相关文章!

热门文章

热门文章

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发
