PHP中的特质-任何真实示例

P.A*_*ndo 4 php inheritance abstract-class interface traits

在php中,特征具有接口和抽象类等特性,特征也有助于继承。任何有关Trait,Interface,Abstract类和Interface的现实示例或讨论。

Max*_*Max 5

设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
    }
}
Run Code Online (Sandbox Code Playgroud)

在PHP中,特征就像“迷你类”。