PHP trait

Trait 和 Class 相似,为类似 PHP 的单继承语言而准备的一种代码复用机制。

一、属性方面

<?php

trait B{
    public $same = true;
    public $different = false;
}

class C{
    use B;
    public $same = true; // PHP 7.0.0 后没问题,之前版本是 E_STRICT 提醒
    public $different = true; // 致命错误
}

二、方法方面

<?php
//基类
class A{
    public function say(){
        return '基类 A';
    }
}
//trait
trait B{
    public function say(){
        return 'trait B';
    }
	public function do(){
		return 'this is a important thing';
	}
}
//当前类
class C extends A{
    use B;
}
$c = new C;
echo $c->say();//trait B
echo $c->do();

三、总结

  1. trait 还是很容易理解的,像继承,但是更加灵活。
  2. trait、基类、当前类三者之间可以重复定义方法,重复定义属性的话初始值必须一致。
  3. say方法是为了说明优先级:当前类方法 > trait方法 > 基类方法。
  4. do方法才是常用模式。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章