首页 / PHP / PHP学习之PHP trait解析
PHP学习之PHP trait解析
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP学习之PHP trait解析,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4881字,纯文字阅读大概需要7分钟。
内容图文
![PHP学习之PHP trait解析](/upload/InfoBanner/zyjiaocheng/828/82cb9aa5c9894d1f84c3e99086c06db5.jpg)
自PHP5.4.0起,PHP实现了一种代码复用的方法,称为trait。 众所周知,PHP中是单继承的,trait是为类似PHP的单继承语言而准备得一种代码复用机制。trait为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用method。trait和class组合的语义定义了一种减少复杂性的方式,避免传统多继承问题。 trait和class相似,但仅仅在用细粒度和一致的方式来组合功能。无法通过trait自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个class之间不需要继承。简单的例子 首先我们举个例子来介绍trait,和类定义相似,但使用关键字trait定义。在类中使用use组合。 <?php trait 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(); 输出结果:
<?php trait 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(); 输出结果:
<?php trait 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(); 输出结果:
<?php trait 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://php.net/manual/zh/language.oop5.traits.php 自PHP5.4.0起,PHP实现了一种代码复用的方法,称为trait。 众所周知,PHP中是单继承的,trait是为类似PHP的单继承语言而准备得一种代码复用机制。trait为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用method。trait和class组合的语义定义了一种减少复杂性的方式,避免传统多继承问题。 trait和class相似,但仅仅在用细粒度和一致的方式来组合功能。无法通过trait自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个class之间不需要继承。 简单的例子 首先我们举个例子来介绍trait,和类定义相似,但使用关键字trait定义。在类中使用use组合。 <?php trait 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(); 输出结果:
<?php trait 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(); 输出结果:
<?php trait 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(); 输出结果:
<?php trait 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(); 输出结果:
内容总结
以上是互联网集市为您收集整理的PHP学习之PHP trait解析全部内容,希望文章能够帮你解决PHP学习之PHP trait解析所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。