【原创】 traits学习笔记
栏目:PHP  作者:隆航  阅读:(855)

首先理解下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属性
}   
?>

常学习,常记录



昵称
邮箱
域名
  记住 通知博主
验证码

  程序相关

站点版本:青春博客-V 2.1.0

开源版本:青春博客-Beta v2.0

 下载  在线支付  在线工具  在线音乐

  随机文章