php traits的作用是针对php如许的单继续言语设想的,旨在让开发者很轻易的在差别继续系统的多个类之间公用一系列要领,以削减单继续带来的局限性。
Traits是针对php如许的单继续言语设想的。旨在让开发者很轻易的在差别继续系统的多个类之间公用一系列要领,以削减单继续带来的局限性。Traits和class的连系,避免了多继续带来的一些列问题。
运用
起首看下官方文档给出的例子:
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。比方:
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。
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的作用有哪些?的细致内容,更多请关注ki4网别的相干文章!
收藏 | 0