PHP中的Trait类详解

2023-02-20 15:15:04 浏览数 (1)

通俗来讲, Trait类不是类,无法直接使用new关键词来创建对象。

传统的PHP类是单一继承模式,即每个类只能继承一个父类。

Trait类的出现让PHP类可以继承多个“父类”。

一、如何使用:

定义一个Class :

Class cDemo

{

public function cfun()

{

return __METHOD__;

}

}

定义两个Trait类:

Trait tDemo1

{

public function fun1()

{

return __METHOD__;

}

}

Trait tDemo2

{

public function fun2()

{

return __METHOD__;

}

}

接下来使用一个class 来继承上面的自定义的类

class myClass extends cDemo

{

// 引用Trait类

use tDemo1, tDemo2;

}

// 实例化类

$obj = new myClass();

// 调用父类方法

echo $obj->cfun(); // cDemo::cfun 这个是父类cDemo中定义的方法

// 调用Trail中的方法

echo $obj->fun1(); // tDemo1::fun1

echo $obj->fun2(); // tDemo2::fun2

二、注意事项

优先级关系 本类中的方法 > Trait中的方法 > 父类中的方法

当一个类继承了多个Trail,且多个Trait中都包含相同的方法时,调用此方法则会报错;解决方案:

使用 insteadof 关键字和 as 关键字

// 这里假设tDemo1 和 tDemo2 中都含有fun1 方法

class myClass extends cDemo

{

// 引用Trait类

use tDemo1, tDemo2{

tDemo2::fun1 insteadOf tDemo1;

tDemo1::fun1 as fun2;

}

}

————————————————

版权声明:本文为CSDN博主「十年励志」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_42748455/article/details/111168641

未经允许不得转载:肥猫博客 » PHP中的Trait类详解

0 人点赞