如果两个对象互相引用,那是不良代码的标志?

时间:2015-09-28 19:35:51

标签: php

给出这段代码:

class EmailHander
{
    public $mailer;

    public function __construct()
    {
        $mailer = new PHPMailer();
    }

    public function getEmail ($name)
    {
        return new EmailTemplate ($name, $this);
    }
}

class EmailTemplate
{
    public $body, $subject, $handler;

    public __construct ($name, EmailHander $handler)
    {
        require ($name.'.html');
        $this->handler = $handler;
    }

    public function send ($target)
    {
        $this->handler->mailer->send ($target, ......);
    }
}

EmailHandler来处理邮件程序,还有许多EmailTemplates代表邮件。所以,

$handler = new EmailHandler();
$email = $hander->getEmail ('subScribe');
$email->send('x@y.com');

但这可能不好。 EmailHandler生成EmailTemplate。但是EmailTemplate是指EmailHandler,所以这是一个循环的东西,是好还是坏?

1 个答案:

答案 0 :(得分:2)

此代码中没有循环依赖项。从电子邮件到其处理程序存在单向依赖关系;处理程序设置依赖关系并不重要。