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方法纔是常用模式。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章