前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP中的Trait类详解

PHP中的Trait类详解

作者头像
超级小可爱
发布2023-02-20 15:15:04
6580
发布2023-02-20 15:15:04
举报
文章被收录于专栏:小孟开发笔记

通俗来讲, 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类详解

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档