Kullanım Kılavuzu Service Container ve Dependency Injection içinde Laravel

Service Container ve bağımlılıkları ve kaynak kodunuzun yapısını verimli bir şekilde yönetmenize yardımcı olan Dependency Injection iki önemli kavramdır. Laravel Bunları farklı senaryolarda nasıl kullanacağınız aşağıda açıklanmıştır:

Susing Service Container

Giriş Service Container, Laravel nesneleri esnek bir şekilde yönetmeye ve sağlamaya yardımcı olur. İşte nasıl kullanılacağı Service Container:

Bir Nesneyi Kaydetme: Bir bind nesneyi Service Container.

app()->bind('userService', function() {  
    return new UserService();  
});  

Nesneye Erişmek: Nesneyi kullanmanız gerektiğinde, Service Container kayıtlı adı kullanarak onu geri alabilirsiniz.

$userService = app('userService');

kullanma Dependency Injection

Dependency Injection bağımlılıkları azaltır ve kodunuzu daha okunaklı hale getirir. İşte nasıl kullanılacağı Dependency Injection:

Bağımlılıkları Constructor: Yoluyla Bildirme Bağımlılıkları kullanmanız gereken sınıfta, bunları constructor. Laravel nesneyi başlatırken bağımlılıkları otomatik olarak enjekte edecektir.

class UserController extends Controller  
{  
    protected $userService;  
  
    public function __construct(UserService $userService)  
    {  
        $this->userService = $userService;  
    }  
}  

Bağımlılıkları Setter Yöntem Yoluyla Enjeksiyon: Bağımlılıkları yöntemler aracılığıyla da enjekte edebilirsiniz setter. Laravel bağımlılıkları enjekte etmek için bu yöntemleri otomatik olarak çağırır.

class UserController extends Controller  
{  
    protected $userService;  
  
    public function setUserService(UserService $userService)  
    {  
        $this->userService = $userService;  
    }  
}  

Çözüm

Service Container ve Dependency Injection in kullanmak, Laravel bağımlılıkları ve kaynak kodu yapısını etkili bir şekilde yönetmenize yardımcı olur. Bu ilkeleri uygulayarak, uygulamalarınızın geliştirilmesi sırasında esnek, bakımı yapılabilir ve kolayca genişletilebilir kodlar oluşturabilirsiniz Laravel.