From 6fcf410891c8d33fe81d815a2dcd4597f23aee9e Mon Sep 17 00:00:00 2001 From: Risad212 Date: Fri, 1 Nov 2024 12:23:14 +0600 Subject: [PATCH] add new dependenxy inversion code --- 5-dependency-inversion-principle.php | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/5-dependency-inversion-principle.php b/5-dependency-inversion-principle.php index 2ea7db2..853b957 100644 --- a/5-dependency-inversion-principle.php +++ b/5-dependency-inversion-principle.php @@ -21,22 +21,25 @@ interface Mailer public function send(); } +// Concrete implementation of Mailer using SMTP class SmtpMailer implements Mailer { public function send() { - + echo 'send message from SMTP mailer'; } } +// Concrete implementation of Mailer using SendGrid class SendGridMailer implements Mailer { public function send() { - + echo 'send message from SendGrid mailer'; } } +// High-level module that depends on the Mailer abstraction class SendWelcomeMessage { private $mailer; @@ -45,4 +48,18 @@ public function __construct(Mailer $mailer) { $this->mailer = $mailer; } + + public function sendWelcome() + { + $this->mailer->send(); + } } + +// Usage example +$smtpMailer = new SmtpMailer(); +$welcomeMessage = new SendWelcomeMessage($smtpMailer); +$welcomeMessage->sendWelcome(); // Outputs: send message from SMTP mailer + +$sendGridMailer = new SendGridMailer(); +$welcomeMessage = new SendWelcomeMessage($sendGridMailer); +$welcomeMessage->sendWelcome(); // Outputs: send message from SendGrid mailer \ No newline at end of file