The Laravel service container is a powerful tool for managing class dependencies and performing dependency injection. Dependency injection is a fancy phrase that essentially means this: class dependencies are “injected” into the class via the constructor or, in some cases, “setter” methods.
Introduction
Service Container adalah dependency injection container dan registry untuk aplikasi. Fungsi utamanya adalah:
- The capacity to manage class dependencies.
Dalam aplikasi Anda menentukan bagaimana suatu object harus dibuat dan setiap kali instance harus dibuat Anda meminta service container untuk melakukannya dengan dependency yang diperlukan.
- The binding of interfaces to concrete classes.
Ketika interface diperlukan di bagian aplikasi, service container akan membuat concrete class secara otomatis. Mengubah concrete class ini pada binding akan mengubah concrete object yang dipakai melalui semua aplikasi Anda.
Class Dependency
Class dependency dalam pemrograman adalah kondisi dimana kita membutuhkan class lain untuk membuat object dari sebuah class.
Automatic Resolution
Automatic resolution, memungkinkan kita untuk memiliki object dari class, tanpa harus menginisialisasi dependency-nya.
Binding & Resolve
Service Container berfungsi sebagai sebuah tempat dimana kita bisa menyimpan berbagai hal dari string biasa, closure, object, class, dll. Ketika kita menyimpan “sesuatu” ke dalam Service Container dinamakan binding.
app()->bind(‘key’, ‘value’);.
Sementara ketika kita mengambil “sesuatu” dari Service Container dinamakan resolve.
app(‘key’):