php - php 中的特征——任何真实世界的例子

标签 php inheritance interface abstract-class traits

在 php 中,traits 具有一些特性,如接口(interface)和抽象类,traits 也有助于继承。任何与 Trait、Interface、Abstract class 和 Interface 相关的真实世界示例或讨论。

最佳答案

假设有 2 个类:MailerWriter

Mailer 通过邮件发送一些文本,其中 Writer 将文本写入文件。

现在假设您想要格式化两个类使用的输入文本。

这两个类将使用相同的逻辑。

  • 您可以创建一个接口(interface),但您需要在两个类中复制逻辑。
  • 您可以创建一个父类并扩展它,但 PHP 不允许继承多个类。如果您的 MailerWriter 类已经扩展了一些类,这将成为一个问题。

所以你使用了一个trait

示例:

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 中,特征就像“迷你类”。

关于php - php 中的特征——任何真实世界的例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40803536/

相关文章:

c# - C#属性类的继承

c# - 从 C# 中的结构继承的梦想

php - 为一个数据库条目存储多个尺寸的多个图像

php - 在 JOIN 语句中创建以前不存在的列?数据库

PHP 脚本停止处理警告错误?

css - 元素动画关键帧的继承

pointers - 如何将接口(interface)转换为结构

c# - 在 C# 中,将 ICollection<X> 转换为 ICollection<Y> 的正确方法是什么?

java - Collection 方法的定义位于哪里?

php - Drupal 7 : Main menu not displaying child elements