81.Trait php5.4 新特性
2.1 Trait的概述
Trait 是 PHP5.4 中的新特性,是 PHP 多重继承的一种解决方案。例如,需要同时继承两个 Abstract Class, 这将会是件很麻烦的事情,Trait 就是 为了解决这个问题。
2.2 Trait的简单使用
格式::
trait 名字{
}
特点:
① 不能被实例化
② 在类中use引入来实现其价值
2.3 多个Trait的引用
use A,B
2.4 Trait之间的嵌套
一个trait 可以由多个 trait 组成
use A,B;
2.5 Trait的属性
在trait中可以定义属性并在class中使用,
单use 的class不允许重复定义属性
2.6 Trait的方法优先级
class中如果有和trait重名的方法则覆盖
trait的方法会覆盖父类方法
2.7 Trait的修饰符
如果方法中存在static 可以用对象$obj->demo() User::demo()
如果trait中存在抽象方法,则实例化的类必须实现此方法
2.8 Trait冲突
使用 insteadof 解决冲突
例:
class User
{
use A,B{
A::demo insteadof B;
//B::demo insteadof A;
//B::demo as daimo;
B::demo as private daimo;
}
public function demo2()
{
$this->daimo();
echo "User中的demo2<br>";
}
}
$u1 = new User();
$u1->demo();
$u1->demo2();