各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > PHP

深入解析PHPtrait

管理员 2023-09-05
PHP
118

深入解析PHPtrait

内容导读

收集整理的这篇技术教程文章主要介绍了深入解析PHPtrait,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2199字,纯文字阅读大概需要4分钟

内容图文

自PHP5.4.0起,PHP实现了一种代码复用的方法,称为trait

众所周知,PHP中是单继承的,trait是为类似PHP的单继承语言而准备得一种代码复用机制。trait为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用method。trait和class组合的语义定义了一种减少复杂性的方式,避免传统多继承问题。

traitclass相似,但仅仅在用细粒度和一致的方式来组合功能。无法通过trait自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个class之间不需要继承。

推荐PHP视频教程:https://www.gxlcms.com/course/list/29/type/2.html

1、简单的例子

首先我们举个例子来介绍trait,和类定义相似,但使用关键字trait定义。在类中使用use组合。

<?phptrait T{    public function t1(){        return 't1';    }    public function t2(){        return 't2';    }}class Demo{    use T;    public function test(){        return 'test';    }多个}$demo = new Demo;echo $demo->t1(),'</br>';echo $demo->test();

输出结果:

t1

test

2、多个trait冲突解决

如果使用多个trait,但是出现了方法名相同,这就出现了冲突,就要手动指定使用哪个trait的方法,使用insteadof关键字实现。

<?phptrait T{    public function t1(){        return 't1';    }      public function t2(){        return 't2';    }}  trait T2{    public function t1(){        return 't3';    }}  class Demo{    use T,T2{        //使用T的m1方法        T::t1 insteadof T2;    }    public function test(){        return 'test';    }}  $demo = new Demo;echo $demo->t1(),'</br>';echo $demo->test();

输出结果:

t1

test

在冲突的时候,也可以使用use定义方法别名解决冲突,例子如下:

<?phptrait T{    public function t1(){        return 't1';    }      public function t2(){        return 't2';    }}  trait T2{    public function t1(){        return 't3';    }}  class Demo{    use T,T2{        //使用T的m1方法        T::t1 insteadof T2;        T2::t1 as new_t1;    }    public function test(){        return 'test';    }}  $demo = new Demo;echo $demo->t1(),'</br>';echo $demo->new_t1(),'</br>';echo $demo->test();

输出结果:

t1

t3

test

3、改变访问权限

也可以使用use关键字来改变方法的访问权限。

<?phptrait T{    public function t1(){        return 't1';    }      public function t2(){        return 't2';    }}  class Demo{    use T{        t2 as protected;    }    public function test(){        return 'test';    }}  $demo = new Demo;echo $demo->t1(),'</br>';echo $demo->t2(),'</br>';echo $demo->test();

输出结果:

上面知识介绍了一些常用的特性,详细可参考官方手册:

https://www.php.com/manual/zh/language.oop5.traits.php

更多PHP相关问题可以访问PHP中文网:https://www.gxlcms.com/

谢谢!

以上就是深入解析PHP trait的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的深入解析PHPtrait全部内容,希望文章能够帮你解决深入解析PHPtrait所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

扫码关注

qrcode

QQ交谈

回顶部