İçeriğe geç

Servis bulucu enjeksiyonu (ARCH7198)

Anahtar php.quality.service-locator · Önem warning · Kategori quality

DI konteynerini enjekte edip servisleri ondan çözmek bağımlılıkları gizler ve test edilebilirliği bozar. Bağımlılıkları doğrudan yapıcıdan enjekte edin.

<?php
class OrderService
{
public function __construct(private ContainerInterface $container) {}
public function place(Order $o): void
{
$this->container->get(Mailer::class)->send($o);
}
}
<?php
class OrderService
{
public function __construct(private Mailer $mailer) {}
public function place(Order $o): void
{
$this->mailer->send($o);
}
}

Konteyner yerine somut bağımlılıkları doğrudan yapıcı parametresi olarak enjekte edin.