PHP中trait的使用
以我的理解,性状是为了满足两个无关类拥有部分相同功能和属性的模块化类,其类型也是PHP5.5中新增的trait。比如蝙蝠和天鹅,二者都有翅膀,都能飞,然而绝不是继承于同一个父级关系,这时候便可以看做拥有相同性状的不同类。
首先定义一个飞的性状
trait flyTrait{
public function fly($desination){
goto $desination;
}
}
天鹅拥有这个形状
class swan extends bird{
use flyTrait;
//孵蛋
public function incubate(){
}
//筑巢
public function buildNest(){
}
}
蝙蝠也拥有这个形状
class bat extends mammal{
use flyTrait;
//出生
public function birth(){
}
//哺乳
public function suckle(){
}
}
各自飞翔
$swan = new swan();
$swan->fly("swan lake");
$bat = new bat();
$bat->fly("ban cave");
通过性状的使用可以将无关的类联系起来,使其使用相同的代码段。在无法多继承的情况下,使用trait也是一个不错的选择。