我有一个包装类,用于获取电子邮件模板:
class Email
{
public function getWellcome()
{
return 'body';
}
public function getRegistration()
{
return 'body';
}
public function getCommentSent()
{
return 'body';
}
}
对于我的班级来说,通过它很容易:
class User
{
private $email;
public function __construct($email)
{
$this->email = $email;
}
public function asd()
{
$m = $this->email->getRegistration();
MailHandler::send($m);
}
}
new User(new Email());
但我觉得有些违反了LoD。如果我像那样重构它会怎么样:
class User
{
private $registrationEmail;
public function __construct($registrationEmail)
{
$this->registrationEmail= $registrationEmail;
}
public function asd()
{
$m = $this->registrationEmail;
MailHandler::send($m);
}
}
new User(new Email()->getRegistration());
这看起来好一点,但我需要逐个注入所有必要的对象,更不用说如果我需要遍历所有电子邮件呢?哪种方式更可取?
答案 0 :(得分:1)
我的方式看起来像这样:
$user = new User;
$user->asd(new Template('/path/to/registration/template.html.twig'));
在我看来,你有两个问题:
Email
类有多种原因需要改变(并且似乎贴错标签)User
班级有依赖关系,大部分时间实际上并不需要<强> P.S。强>
我并非完全相信,您的User
班级应负责发送注册确认电子邮件。