首先理解下PHP的继承,PHP是单继承,A继承B,B继承C,这种单继承。但是如果要A继承B和D,那么就实现不了的。
Traits可以理解为一组能被不同的类都能调用到的方法集合,但Traits不是类!不能被实例化。
<?php
trait A{
function B(){}
function C(){}
}
//然后在类中调用这个traits,语法为:
class myClass{
use myTrait;
}
//这样就可以通过use myTraits,调用Traits中的方法了,比如:
$obj = new myClass();
$obj-> traitMethod1 ();
$obj-> traitMethod2 ();
?>如果上面的难以理解,那么换个容易理解的说法
现在有 地址 这个属性,然后商城中 个人(personal) 商家(business) 订单(order) 这个三个对象,因为地址是公用属性
常用的写法是写一个类 存放地址属性,然后个人和商家分别继承。
<?php
class addressObj{
private $address;
public getAddress() {
return $this->address;
}
public setAddress($address) {
$this->address = $address;
}
}
class personal extends addressObj{
//这里可以使用address属性
}
class business extends addressObj{
//这里可以使用address属性
}
?>但是就OOP开发的思路来说,个人(personal) 商家(business)属于用户类,而订单不属于此类,继承同一个属性就不太好了,所以这里用到了traits
<?php
trait addressObj{
private $address;
public getAddress() {
eturn $this->address;
}
public setAddress($address) {
$this->address = $address;
}
}
class personal{
use addressObj;
// 这里可以使用address属性
}
class business{
use addressObj;
//这里可以使用address属性
}
class Order{
use addressObj;
//这里可以使用address属性
}
?>常学习,常记录
上一篇: JQ分享几个比较好用的代码...
下一篇: 分享一个sb3的激活码...