这个问题没有编程语言范围。
假设我们的控制器操作或任何服务使用的函数/方法很少。
class Controller {
function ourAction () {
$document = $this->getDocumentFromDB();
if (!$document) {
throw new NotFoundException;
}
$this->mailer->send($document);
}
}
class Mailer {
function send ($document) {
if (!$document) {
throw \Exception('Document parameter is empty');
}
}
}
是否需要在 mailer-> send()中检查文档是否存在,或者由于控制器操作验证而无需检查?
答案 0 :(得分:0)
我会改用类型提示:
class Mailer {
function send (MailableDocument $document) {
}
}
interface MailableDocument {
//whatever document methods you use in the mailer
}
PHP会为你做脏事。
修改强>
无需在控制器中进行检查:
class Controller {
function ourAction () {
try {
$this->mailer->send($this->getDocumentFromDB());
} catch (\UnexpectedValueException $e) {
throw new NotFoundException(null, null, $e); //whatever parameters it requires.
}
}
}
class Mailer {
function send ($document) {
if (!$document) {
throw \UnexpectedValueException('Document parameter is empty');
}
}
}