自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait。
Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。
Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。 无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个 Class 之间不需要继承。
优先级
从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。
越来越多的框架和代码开始使用traits方式去组织一些功能,这是非常高效的代码组织结构。
通过trait来减少不必要的类继承关系,让代码更加复用,形成可以拔插的代码集合。
通过逗号分隔,在 use 声明列出多个 trait,可以都插入到一个类中。
trait GetData{ public function getdata( ) { return "获取数据"; } } trait SetData{ public function setdata( ) { return "设置数据"; } } class Entity{ use GetData,SetData; } $entity = new Entity(); echo "<br>"; echo $entity->getdata()."<br>"; echo $entity->setdata()."<br>";
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
trait
GetData
{
public
function
getdata
(
)
{
return
"获取数据"
;
}
}
trait
SetData
{
public
function
setdata
(
)
{
return
"设置数据"
;
}
}
class
Entity
{
use
GetData
,
SetData
;
}
$
entity
=
new
Entity
(
)
;
echo
"<br>"
;
echo
$
entity
->
getdata
(
)
.
"<br>"
;
echo
$
entity
->
setdata
(
)
.
"<br>"
;
|
输出结果是:
334

被折叠的 条评论
为什么被折叠?



