Dependency Injection di Controller
Dependency Injection adalah pola desain yang memungkinkan kita untuk menginjeksi ketergantungan (dependencies) ke dalam sebuah class, daripada class itu sendiri yang membuatnya. Di Laravel, Dependency Injection sangat sering digunakan, terutama di dalam Controller, untuk meningkatkan keterbacaan dan memudahkan pengujian.
Langkah-langkah
1. Membuat Controller
Pertama-tama, kita perlu membuat sebuah controller. Kamu bisa menggunakan perintah Artisan untuk membuatnya.
php artisan make:controller SampleController
2. Membuat Service Class
Selanjutnya, kita bisa membuat service class yang akan kita injeksikan ke dalam controller. Misalnya, kita akan membuat UserService
.
namespace App\Services;
class UserService
{
public function getUserData($id)
{
// Logika untuk mendapatkan data user
return [
'id' => $id,
'name' => 'John Doe',
];
}
}
3. Menginjeksikan Service ke Controller
Sekarang, kita akan menggunakan UserService
di dalam SampleController
. Anda dapat melakukannya melalui constructor.
namespace App\Http\Controllers;
use App\Services\UserService;
class SampleController extends Controller
{
protected $userService;
public function __construct(UserService $userService)
{
$this->userService = $userService;
}
public function show($id)
{
$userData = $this->userService->getUserData($id);
return response()->json($userData);
}
}
4. Menyiapkan Route
Setelah controller siap, kita perlu menyiapkan route agar bisa mengakses controller tersebut. Buka file routes/web.php
dan tambahkan route berikut:
use App\Http\Controllers\SampleController;
Route::get('/user/{id}', [SampleController::class, 'show']);
5. Menggunakan Dependency Injection di Method
Selain menggunakan Dependency Injection di constructor, kamu juga bisa menginjeksikan dependencies langsung di method. Misalnya, kita membuat method baru di SampleController
.
public function create(UserService $userService)
{
// Logika untuk membuat user baru
return response()->json(['message' => 'User created']);
}
6. Menjalankan Aplikasi
Sekarang, kamu bisa menjalankan aplikasi Laravel dan mengakses URL yang telah kita buat:
php artisan serve
Lalu buka browser dan akses:
http://localhost:8000/user/1
Kesimpulan
Dependency Injection adalah cara yang sangat jitu dalam mengelola dependencies di Laravel. Dengan menggunakan pola ini, kita bisa mengurangi ketergantungan antar class, meningkatkan keterbacaan, dan memudahkan pengujian.
Untuk mendapatkan informasi lebih lanjut, kamu bisa merujuk ke dokumentasi resmi Laravel mengenai Dependency Injection.