首先理解下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的激活码...