2016-11-25 62 views
2

在php中,traits具有一些像界面和抽象類一樣的特性,並且特性也有助於繼承。任何關於特質,接口,抽象類和接口的真實世界示例或討論。php中的特質 - 任何真實世界中的例子

+0

嗨,你明白了嗎? – Max

+1

[Traits in PHP中的可能的重複 - 任何現實世界的例子/最佳實踐?](http://stackoverflow.com/questions/7892749/traits-in-php-any-real-world-examples-best-practices) – sepehr

回答

3

假設有2個類別:MailerWriter

Mailer通過郵件發送一些文本,Writer在文件中寫入文本。

現在想象你想要格式化兩個類使用的輸入文本。

這兩個類都會使用相同的邏輯。

  • 您可以創建一個接口,但您需要複製這兩個類中的邏輯。
  • 您可以創建父類並對其進行擴展,但PHP不允許繼承多個類。如果你的MailerWriter類已經擴展了一些類,這將會成爲一個問題。

所以你使用特質

例子:

trait Formatter 
{ 
    public function format($data) 
    { 
     // Do some stuff 
     return $data; 
    } 
} 

class Mailer 
{ 
    use Formatter; 

    public function send($data) 
    { 
     $data = $this->format($data); 
     // Send your mail 
    } 
} 

class Writer 
{ 
    use Formatter; 

    public function write($data) 
    { 
     $data = $this->format($data); 
     // Write in file 
    } 
} 

在PHP中,特徵是像 '迷你班'。