Dependency Injection = cara ngasih (meng-inject) sebuah object/class yang dibutuhin oleh kode kita, tanpa kita bikin sendiri di dalam function/class itu.
Alias:
➡️ Kamu butuh sesuatu? Framework yang nyediain.
➡️ Bukan kamu yang instansiasi object-nya manual.
// controllers/users_controller.ts
import { inject } from '@adonisjs/core'
import { UserService } from '#services/user_service'
@inject()
export default class UsersController {
constructor(private userService: UserService) {}
index() {
return this.userService.getAllUsers()
}
test() {
return this.userService.getUserByEmail('a@gmail.com')
}
}
// services/user_service.ts
export class UserService {
async getAllUsers() {
return [1, 2, 3, 4, 5, 6, 7, 8, 9]
}
async getUserByEmail(email: string) {
return email
}
}
Cara gunainnya di routes.
// start/routes.ts
router.get('/users', [UsersController, 'index']).as('users.index')
router.get('/users/test', [UsersController, 'test']).as('users.test')