首页 > php > php中的trait

php中的trait

作者:bin
目录
[隐藏]

自php5.4起,php提供了另一种代码复用的方法:trait

代码复用,首先想到的是继承,这是纵向的,trait更像是横向平行的。

一、使用

//定义一个trait
trait Iam_trait{
    function my_echo($data){
        echo $data;
    }

    static function my_print($data){
        echo $data;
    }
}

class CLass_A{
    //在类中使用tarit
    use Iam_trait;
}

CLass_A::my_print('using trait staic');
$a = new CLass_A();
$a->my_echo('using tarit method');

二、使用多个trait:

use first_trait, second_trait;

三、trait之间嵌套

trait Iam_trait_2{
    use Iam_trait;
}

四、定义抽象方法:

trait Iam_trait{
    //使用trait必须实现这个方法
    abstract public function my_echo($data);
}

class CLass_A{
    use Iam_trait;
    function my_echo($data){
        echo $data;
    }
}

$a = new CLass_A();
$a->my_echo('using tarit method');

五、避免冲突

如果不同的trait有相同的方法名字,那么可以这样解决冲突:

trait Iam_trait{
    function my_echo(){
        echo 'Iam_trait';
    }
}

trait Iam_trait_2{
    function my_echo(){
        echo 'Iam_trait_2';
    }
}

class CLass_A{
    use Iam_trait,Iam_trait_2 {
        //这里声明,用Iam_trait_2->my_echo替换Iam_trait->my_echo
        Iam_trait_2::my_echo insteadof Iam_trait;
    }
}

$a = new CLass_A();
$a->my_echo();

您必须 [ 登录 ] 才能发表留言!