主页 > PHP教程 > 正文

PHP中的traits运用详解

 PHP 5.4中的traits,是新引进的特性,中文还真不知道怎么精确翻译好。其实践的意图,是为了有的场合想用多承继,但PHP又没多承继,所以就发明晰这样的一个东西。

  Traits能够理解为一组能被不同的类都能调用到的办法调集,但Traits不是类!不能被实例化。先来比方看下语法:

<?php
trait myTrait{
    function traitMethod1(){}
    function traitMethod2(){}
}
//然后是调用这个traits,语法为:
class myClass{
    use myTrait;
}
//这样就能够经过use myTraits,调用Traits中的办法了,比方:
$obj = new myClass();
$obj-> traitMethod1 ();
$obj-> traitMethod2 ();


  接下来,咱们探求下为什么要用traits,举个比方,比方有两个类,别离为business(商务者)和Individual(个人),它们都有地址的特点,传统的做法是,再笼统出一个这两个类都一起有特性的父类,比方client,在client类中设置拜访特点address,business和individual别离承继之,如下代码:

// Class Client  
class Client  {  
    private $address;  
    public getAddress() {  
        return $this->address;  
    }       
    public setAddress($address) {  
        $this->address = $address;    
    }  
}  
class Business extends Client{  
    //这儿能够运用address特点  
}  
// Class Individual  
class Individual extends Client{  
//这儿能够运用address特点  
}

  但假设又有一个叫order类的,需求拜访相同的地址特点,那怎么办呢?order类是没办法承继client类的,由于这个不符合OOP的准则。这个时分traits就派上用场了,能够界说一个traits,用来界说这些公共特点。

// Trait Address
trait Address{
    private $address;
    public getAddress() {
        eturn $this->address;
    }
    public setAddress($address) {
        $this->address = $address;
    }
}
// Class Business
class Business{
    use Address;
    // 这儿能够运用address特点
}
// Class Individual
class Individual{
    use Address;
    //这儿能够运用address特点
}
// Class Order
class Order{
    use Address;
    //这儿能够运用address特点
}

这样就便利多了!


上一篇:CSRF的防护实例(PHP)
下一篇:Memcached::cas 详解

PythonTab微信大众号:

Python技能交流合作群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854