何かを集計して報告するようなシーンを考えます。
mailerのインスタンスはDIコンテナからDIしてます。
これで、Reporterがmailerの生成方法を知る必要はなくなり、
疎な関係にできています。
しかし、メールを送る時の setTo
メソッドで送信先を設定する処理。
これもDIコンテナ側でやってしまって良いものなのでしょうか。
例えば、色んな集計バッチみたいなところで、だいたい同じ所にメール送りたいという場合、
xxxReporterクラスで必ず setTo
を呼び出す必要があり、この重複を割ける為にそれをDIコンテナでやってよいものか・・
自分はDIコンテナはあくまでも、自分が使いたいインスタンスの生成方法を知る必要をなくす事で疎な関係に出来る事にメリットがあると思っています。
そのDIコンテナが、作ったインスタンスを都合の良いような形にまで修正してから渡すというのは本来のDIコンテナの役割ではないような気がするのですが。
皆様はどんなお考えをお持ちでしょうか。
class Reporter { private $mailer = null; public function __construct(MailHandlerInterface $mailer) { $this->mailer = $mailer; } /** * 何かを集計してメールで報告 */ public function report() { // 集計処理 // 集計結果をメール $this->mailer->setTo('test@example.com'); $this->mailer->send($report); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。