nuri60
$this->app->bind(
UserRepositoryInterface::class,
UserRepository::class
);
şeklinde bind yaptın. Artık UserRepositoryInterface enjekte ettiğinde sana UserRepository sınıfını verecek.
public function index(UserRepositoryInterface $repo)
{
$users = $repo->allUsers(); // Burada $repo UserRepository sınıfı
}
Diyelim ki bu UserRepository direkt sorgu yapıp kayıtları getiriyor ama sen bunun cache versiyonunu yazdın ve UserRepositoryInterface enjekte ettiğin yerleri tek tek değiştirmek istemiyorsun. Sadece bind tanımlamasını değiştiriyorsun:
$this->app->bind(
UserRepositoryInterface::class,
CachedUserRepository::class // UserRepository::class yerine bunu yazdın
);
diğer yerleri ellemiyorsun:
public function index(UserRepositoryInterface $repo)
{
$users = $repo->allUsers(); // Burada $repo artık CachedUserRepository sınıfı oldu
}
Buna Inversion of Control deniyor.