php traits的作用有哪些?
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 smarty模板引擎怎么用?
推荐阅读
-
有哪些你不知道的Python小工具
-
C#/.NET/.NET Core定时任务调度的方法或者组件有哪些--Timer,FluentScheduler还是...
-
php 函数当中实现相同功能但是速度有差异的有哪些,为什么速度会有差异?
-
有哪位高手知道SNS获取邮箱联系人列表的PHP代码(最好有hotmail,gmail,yahoo)呢
-
请教新建字段时候语句`aaa` varchar(11) NOT NULL,中的NOT NULL有什么作用呢
-
mysql-数据库中的关系表有什么作用 求大神解惑
-
PHP编程中有哪些常见的低级错误?
-
mysql-数据库中的关系表有什么作用 求大神解惑
-
浅析php变量作用域的一些问题
-
php检查字符串中是否有外链的方法