Getting Started with PHP Traits
PHP:8.0
PHP Traits 是 PHP 中用來做 Mixin 多重繼承的方法,主要目的是解決在單線物件繼承的限制下,讓程式碼可以重複使用,並且降低複雜度。
進行物件導向開發時,在程式架構明確之下,使用 繼承
可以解決大部份的狀況,但仍會有一些較為不是垂直相關的功能需要被重複使用,如果在新建物件實體之前,需要傳入各種相依使用的物件反而會降低可維護性。Trait
就是用來解決這樣子的情境,既保持程式結構,也增加可用性。
Basic Usage
Trait
的用法很簡單,只要搭配 trait
關鍵字使用就可以了,剩的跟寫 class
差不多。
此範例舉的情境為某公司出產汽車跟機車,但該公司不管任何產品,發行地區是一致的,因此使用 Trait
處理會是選項之一。
// Trait
trait ReleaseRegion {
protected $allowRegion = [
'TW' => 'Taiwan',
'JP' => 'Japan',
'LT' => 'Lithuania'
];
public function getRegion() {
return $this->allowRegion;
}
}
class Car {}
class Scooter {}
class Model3 extends Car {
// Use Trait in Object
use ReleaseRegion;
// Use multiple traits
// use ATrait, BTrait
}
$carObj = new Model3;
// Use Trait function
print_r($carObj->getRegion());
Notice: 實際應用情境,相關的 code 都會拆成不同的檔案,因此
Trait
在使用時也要注意namespace
問題。