从另一个不同种类/类的实例创建一个实例。
快速示例:您正在使用 ORM,并且您在数据库中存储了一个电子邮件队列。然后在某些时候,您必须使用第三方库发送批量电子邮件。
您的对象(此处与 PHP 无关,为简单起见为公共属性):
class Mail
{
/**
* @var string
*/
public $senderText;
/**
* @var My\App\Entity\User
*/
public $user;
/**
* @var \Doctrine\ORM\ArrayCollection
*/
public $attachments;
}
...而您的第三方“邮件”对象则大不相同。例如,您可能需要执行以下操作:
$mail = /* hydrated */;
$user = $mail->getUser();
$mailer = new ThirdPartyMailer();
// Fill message properties
$message = $mailer->createMessage();
$fullName = sprintf('%s %s', $user->getFirst(), $user->getLast());
$message->addFrom(array($fullName => $user->getEmail()))
// Create and add attachments
foreach($mail->getAttachments() as $attachment)
{
$message->attach($mailer->createAttachment($attachment->getFullPath()));
}
这是一种模式吗?对象转换器之类的东西,例如负责从另一个实例创建/转换一个实例的类...