TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 610 subscribers
Post #82 111
#design_patterns

... ادامه پست قبلی

در مثال بالا با تزریق وابستگی ها از طریق کاستراکتور آشنا شدیم، اما راه های دیگری نیز وجود دارد. شامل:
1 - Setter Injection :
در این روش، به جای تزریق وابستگی‌ها از طریق کانستراکتور، از متدهای Setter کلاس استفاده می‌کنیم تا وابستگی‌ها را تنظیم کنیم.
class EmailSender {
private $mailer;

public function setMailer(MailerInterface $mailer) {
$this->mailer = $mailer;
}

public function sendEmail($to, $subject, $body) {

}
}

$smtpMailer = new SmtpMailer();
$emailSender = new EmailSender();
$emailSender->setMailer($smtpMailer);
$emailSender->sendEmail('user@example.com', 'Test Subject', 'Test Body');

————

2 - Method Injection :
در این روش، وابستگی‌ها را به صورت آرگومان‌های ورودی به متدها تزریق می‌کنیم.
class EmailSender {
public function sendEmail($to, $subject, $body, MailerInterface $mailer) {

}
}

$smtpMailer = new SmtpMailer();
$emailSender = new EmailSender();
$emailSender->sendEmail('user@example.com', 'Test Subject', 'Test Body', $smtpMailer);

————

3 -
Container (IoC) Injection :
در این روش، از یک کانتینر (Container) نرم‌افزاری برای ایجاد شئ ها و تزریق وابستگی‌ها استفاده می‌شود. این کانتینر مسئول ایجاد و مدیریت شئ ها و تزریق وابستگی‌ها به طور خودکار است.
$container = new Container();

$container->register('mailer', SmtpMailer::class);
$container->register('emailSender', EmailSender::class)->withArgument('mailer');
$emailSender = $container->get('emailSender');
$emailSender->sendEmail('user@example.com', 'Test Subject', 'Test Body');

تمام این روش‌ها برای تزریق وابستگی‌ها مناسب هستند و انتخاب بین آن‌ها بستگی به نیازها و معماری کد شما دارد. استفاده از Dependency Injection باعث کاهش وابستگی‌ها و افزایش انعطاف‌پذیری و قابلیت تست کد می‌شود.
.
  • 👍 2
More from @amirhdeveloper
  1. Oct 7, 2026بیاید از قدرت های لاراگرام بگم لاراگرام یک full-stack و ai-ready فریمورک برای توسعه ربات ه…
  2. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  3. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  4. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  5. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  6. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →