php trait是一种代码复用技术,为PHP的单继承限制提供了一套灵活的代码复用机制,其使用语法如“trait ezcReflectionReturnInfo {function getReturnType() {/*1*/}…}\ u v S !”。
本文操作环境:winX 1 H z 1dows7系统、PHP7.1版,DELL G3电脑
1、php中的trait是啥?% v i l % X M )
看上去既像类又像接口,其\ W W h a实都不是,Trait可以看做类的6 0 Z z 8 T ~ E b部分实现,可以混入一个或多个现有的PHP类中,其作用I 4 C 1 C % u j R有两个:表明类可以做什么;提供模块化实现。Trait是一种代码复用技术,为PHP的单继承限制提供t H D 1 U { c r了一套灵活的代码复用机制。
2、PHP版本要求:
php5.4开始引入trait,其目的就是在于i | 9 Y – h E减少代码的重复,增加代码的复用性。
3、trait的使用场景:
试想这样一种情况,当有一个方法需要在很多的类中使用时,该怎么处理?
通常一般的处理方式会是,写一个基础类,在基类中实现这个方法,然后所有类都继承这个基类。
这是一种处理方法,但不是最好的处理方式。通常采用继承的情况是:几个类具有很大的相似性。比如人作为一个基类,学生、工人、等继承“人”这个基类来扩展。
由此,traC @ 3it的作用就出来了,trait 可以在多个类中使用。
4、trait如何使用:
引用PHP手册中的例子:
例子一
<?php trait ezcReflectionReturnInfo { function getReturnType() { /*1*/ } functionD | 2 K getReturnDescription() { /*2*/ } } class ezcReft S D flectiv ( ` z qonMethod extends Re1 ( f J -flectionMethod { use ezcReflectionReturnInfo; /* ... */ } class ezcRefle= U : 4 I B F 9 )ctionFD F z w V kunction exS b t R 1 /tends Refle^ c - d u CctionFunction { use ezcReflectionReturnInfo; /* ... */ } ?>
1、先声明一个trait;
2、在类中使用use将该L n % z * k Rtrait引入。
是不是非常简单(手动逃)?需要注意的是trait的优先级。
5、traO 6 t , z B b d Pit的优先级
(敲黑板)从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方g + : ! k法,而 trait 则覆盖了被继承的方法。
优先级:自身方法>trait的方法>继承的方法(就是这样子的。)
看例子
<?php trait HelloWorld { public function sayHello() { echo 'Hello World!'; } } class TheWorld8 T f , ` f e _IsNotEnough { use HelloWorld; public function sayHello() { echo 'HelloS W T \ 1 8 O P Universe!'; } } $o = new TheWorldIsNotEnough(); $o-&g` 7 ; }t;sayHL K m y H m s Aello();//输出是 Hello Univea y ) drse! ?>
还有一点需要注意的是:多个tD U Rrait的使用。c 5 ; # Z A T B
<?phpO ! 1 F S \ V l trait Hello { public function saym 2 QHe= B S - ) } @ ello() { echoc O ^ ) 'Hello '; } } trait World { public function sayWorld() { echo 'WorH f . s :ld'; } } class MyQ n d 5 3HelloWorld { use Hello, World; public funcm 0 @ # y . |tion sayExclamationMark() { echo '!';| 9 J j } } $o = newf : Q MyHelloWorld(); $o->sayHello(); $U Q k 3o->sayWorld(); $o->say3 ~ z { (ExclamationMark(); ?>
总结:Trait是一种代码复用技术,为PHP的单继承限制提供了一套灵活的代码复用机制。
推荐学习:《PHP视频教? 0 o程》
以上就是php trait用c n r . Z E Z O法是什么的详细内容,更多请关注php中文网其它相关文章!
声明:本文原创发布php中文网,转载请注明出= 4 } = L q处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
原创文章,作者:町子门户,如若转载,请注明出处:https://www.6fzz.com/12600.html