在 php 中,traits 具有一些特性,如接口(interface)和抽象类,traits 也有助于继承。任何与 Trait、Interface、Abstract class 和 Interface 相关的真实世界示例或讨论。
最佳答案
假设有 2 个类:Mailer
和 Writer
。
Mailer
通过邮件发送一些文本,其中 Writer
将文本写入文件。
现在假设您想要格式化两个类使用的输入文本。
这两个类将使用相同的逻辑。
- 您可以创建一个接口(interface),但您需要在两个类中复制逻辑。
- 您可以创建一个父类并扩展它,但 PHP 不允许继承多个类。如果您的
Mailer
和Writer
类已经扩展了一些类,这将成为一个问题。
所以你使用了一个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/