Home >Backend Development >PHP Tutorial >Detailed explanation of using traits in PHP

Detailed explanation of using traits in PHP

高洛峰
高洛峰Original
2016-10-17 10:41:311101browse

 Traits in PHP 5.4 is a newly introduced feature. I really don’t know how to translate it accurately in Chinese. Its actual purpose is to use multiple inheritance in some situations, but PHP does not have multiple inheritance, so such a thing was invented.

Traits can be understood as a set of methods that can be called by different classes, but Traits are not classes! Cannot be instantiated. Let’s take an example to look at the syntax first:

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

Next, let’s explore why we use traits. For example, there are two classes, business and Individual, both of which have address attributes. , the traditional approach is to abstract a parent class that both classes have common characteristics, such as client, and set the access attributes address, business and individual in the client class to inherit them respectively, as follows:

// 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属性  
}

But if There is a class called order that needs to access the same address attribute, so what should I do? The order class cannot inherit the client class because this does not comply with the principles of OOP. Traits come in handy at this time. You can define a trait to define these public properties.

// 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属性
}


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn