php traits的作用是针对php这样的单承继言语设计的,旨正在闪开发者很不便的正在没有同承继体系的多个类之间专用一系列办法,以缩小单承继带来的局限性。
Traits
是针对php这样的单承继言语设计的。旨正在闪开发者很不便的正在没有同承继体系的多个类之间专用一系列办法,以缩小单承继带来的局限性。Traits以及class的连系,防止了多承继带来的一些列成绩。
应用
起首看下民间文档给出的例子:
<?php trait ezcReflectionReturnInfo { function getReturnType() { /*1*/ } function getReturnDescription() { /*2*/ } } class ezcReflectionMethod extends ReflectionMethod { use ezcReflectionReturnInfo; /* ... */ } class ezcReflectionFunction extends ReflectionFunction { use ezcReflectionReturnInfo; /* ... */ } ?>
从下面的例子能够看出,特点集ezcReflectionReturnInfo
蕴含了两个办法:getReturnType
以及getReturnDescription
,而上面的两个子类辨别承继自没有同的父类,却能够经过use ezcReflectionReturnInfo
来复用这两个办法。简略不便。
相干学习保举:PHP编程从入门到通晓
留意事项
假如子类、父类、use的traits中存正在重名办法,那末这三个办法的优先级为:子类 > tratis > 父类;
能够同时use多个traits,但不成use重名的traits;
假如use的多个traits中存正在办法名抵触,能够应用指定某个办法来自于某个tratis。例如:
<?php trait A { public function smallTalk() { echo 'a'; } public function bigTalk() { echo 'A'; } } trait B { public function smallTalk() { echo 'b'; } public function bigTalk() { echo 'B'; } } class Talker { use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; } }
办法能够应用as来设置别称,但只正在该类无效。
class Aliased_Talker { use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; B::bigTalk as talk; } }
应用as的时分,还能够扭转办法的可见性。
class MyClass2 { use HelloWorld { sayHello as private myPrivateHello; } }
traits能够嵌套,例如A能够use B。
<?php trait Hello { public function sayHello() { echo 'Hello '; } } trait World { public function sayWorld() { echo 'World!'; } } trait HelloWorld { use Hello, World; }
traits中能够界说abstract办法,一样的,use该traits的class,也需求完成这些abstract的办法;
traits中能够界说惯例变量、动态的变量以及办法;
以上就是php traits的作用有哪些?的具体内容,更多请存眷资源魔其它相干文章!
标签: php php教程 php故障解决 php使用问题 traits
抱歉,评论功能暂时关闭!