php 中的特征- 任何现实世界的例子
Traits in php- Any real world example
在 php 中,traits 具有一些特性,如接口和抽象 class 并且 traits 在 inheritance.Any 现实世界的例子或与 Trait、Interface、Abstract 相关的讨论中也很方便 class 和界面。
假设有 2 个 classes : Mailer
和 Writer
.
Mailer
通过邮件发送一些文本,其中 Writer
将文本写入文件。
现在假设您想要格式化两个 classes 使用的输入文本。
这两个class你会使用相同的逻辑。
- 您可以创建一个界面,但您需要在两个 class 中复制逻辑。
- 您可以创建一个父 class 并扩展它,但是 PHP 不允许继承多个 class。如果您的
Mailer
和 Writer
classes 已经扩展了一些 classes. ,这将成为一个问题
所以你使用了特质
示例:
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中,特质如'mini-classes'。
在 php 中,traits 具有一些特性,如接口和抽象 class 并且 traits 在 inheritance.Any 现实世界的例子或与 Trait、Interface、Abstract 相关的讨论中也很方便 class 和界面。
假设有 2 个 classes : Mailer
和 Writer
.
Mailer
通过邮件发送一些文本,其中 Writer
将文本写入文件。
现在假设您想要格式化两个 classes 使用的输入文本。
这两个class你会使用相同的逻辑。
- 您可以创建一个界面,但您需要在两个 class 中复制逻辑。
- 您可以创建一个父 class 并扩展它,但是 PHP 不允许继承多个 class。如果您的
Mailer
和Writer
classes 已经扩展了一些 classes. ,这将成为一个问题
所以你使用了特质
示例:
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中,特质如'mini-classes'。