php的trait使用方法
php的trait使用方法
php的新特性trait,为什么要使用它:
开发人员能够自由地在不同层次结构内独立的类中复用 method,在一定程度上弥补了单继承语言在某些情况下代码不能复用的问题。
NO1:trait类与普通类对比:
相同:
trait 能够像普通的类一样定义属性,方法(包含抽象的、静态的、抽象的);
trait 引入到基类里面,其子类里面也能访问trait里面的属性和方法。
不同:
trait不用实例化就能访问定义的普通方法以及属性。
trait里面不能定义构造函数
NO2:使用方法,定义一个trait类及方法,再其他内引用:
trait testTrait{
public function traitTest(){
return 'this is trait test';
}
}
class myTest{
use testTrait;
}
NO3:调用
$mobj = new myTest();
echo $mobj->traitTest();
NO4:一个类可以引用多个trait,所以可能出现相同的函数名,解决方法如下:
trait testTrait{
public function traitTest(){
return 'this is trait test';
}
}
trait testTrait1{
public function traitTest(){
return 'this is trait test1';
}
}
class myTest{
use testTrait, testTrait1{
testTrait1::traitTest insteadof testTrait; //insteadof关键词指定使用冲突方法中的哪一个
testTrait1::traitTest as traitTest1; //同方法名的trait设置别名
};
}
//调用
$mobj = new myTest();
echo $mobj->traitTest1(); //输出"this is trait test1"
NO5:tp框架引入操作,将trait类Traittest1文件放入thinkphp\library\traits\controller下,其他类文件引入及调用方法如下:
use \traits\controller\Traittest1;
//测试trait
function testTrait(){
echo $this->testTrait1();
}