PHP系列之一traits的应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP系列之一traits的应用相关的知识,希望对你有一定的参考价值。

Traits 在php中实现在方法的重复使用;Traits与Class相似,但是它能够在Class中使用自己的方法而不用继承;

Traits在Class中优先于原Class中的方法,引用PHP Document中的例子:

<?php
class Base {
    public function sayHello() {
        echo ‘Hello ‘;
    }
}

trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo ‘World!‘;
    }
}

class MyHelloWorld extends Base {
    use SayWorld;
}

$o = new MyHelloWorld();
$o->sayHello();
?> 

 以上输出结果为:

Hello World!

Traits按顺序原则,被覆盖的例子:

<?php
trait HelloWorld {
    public function sayHello() {
        echo ‘Hello World!‘;
    }
}

class TheWorldIsNotEnough {
    use HelloWorld;
    public function sayHello() {
        echo ‘Hello Universe!‘;
    }
}

$o = new TheWorldIsNotEnough();
$o->sayHello();
?> 

输出结果为:

Hello Universe!

 Traits在Class中的应用,同样以PHP Document为例:

<?php
trait Hello {
    public function sayHello() {
        echo Hello ;
    }
}

trait World {
    public function sayWorld() {
        echo World;
    }
}

class MyHelloWorld {
    use Hello, World;
    public function sayExclamationMark() {
        echo !;
    }
}

$o = new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
$o->sayExclamationMark();
?> 

输出结果为:

Hello World!

 

以上是关于PHP系列之一traits的应用的主要内容,如果未能解决你的问题,请参考以下文章

PHP系列 | 代码复用trait的构造函数使用

php如何实现多继承?

PHP trait 特性

php Trait的使用

PHP的Trait机制

php - Trait