2016-11-25 46 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中,特征是像 '迷你班'。