首页 > 作文

关于trait()

更新时间:2023-04-08 10:23:14 阅读: 评论:0

php 5.4.0 起,php清爽夏日 实现了一种代码复用的方法,称为 trait

trait 是为类似 php 的单继承语言而准备的一种代码复用机制。trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method

trait看上去更像是为了代码的复用而写的一个小插件,它类似于include可以用u放在类中间,让trait里面定义的方法作为class的一部分本身不能直接实例化,trait的作用域在引用该trait类的内部是都可见的(public、纳米技术private等等都可以) 可以理解为u关键字将trait的实现代码copy了一份到引用该trait的类中。
<?php traitezcreflectionreturninfo{functiongetreturntype(){/*1*/}functiongetreturndescription(){/*2*/}}claszcreflectionmethodextendsreflectionmethod{uezcreflectionreturninfo;/*...*/ }claszcreflectionfunctionextendsreflectionfunction{uezcreflectionreturninfo;/*...*/ } ?>

优先级

从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类金融专业排名的成员覆盖了 trait 的方法,而 t怎样恢复视力rait 则覆盖了被继承的方法。

<?php classba{publicfunctionsayhello(){echo'hello';}}traitsayworld{publicfuncti狂人日记读书笔记onsayhello(){parent::sayhello();echo'world!';}}classmyhelloworldextendsba{usayworld;} $o=newmyhelloworld(); $o->sayhello();  #输出:hello, world! ?> 
<?php traithelloworld{publicfunctionsayhello(){echo'helloworld!';}}classtheworldisnotenough{uhelloworld;publicfunctionsayhello(){echo'hellouniver!';}} $o=newtheworldisnotenough(); $o->sayhello();  #输出:hello univer!  ?>

多个 trait

通过逗号分隔,在 u 声明列出多个 trait,可以都插入到一个类中。

<?php traithello{publicfunctionsayhello(){echo'hello';}}traitworld{publicfunctionsayworld(){echo'world';}}classmyhelloworld{uhello,world;publicfunctionsayexclamationmark(){echo'!';}} $o=newmyhelloworld(); $o->sayhello(); $o->sayworld(); $o->sayexclamationmark(); ?>

如果两个 trait 都插入了一个同名的方法,如果没有明确解决冲突将会产生一个致命错误。

引用地址:

本文发布于:2023-04-08 10:23:13,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/6d896ae778c64c5278a6b1716976eaf2.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:关于trait().doc

本文 PDF 下载地址:关于trait().pdf

标签:方法   类中   复用   代码
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图