minstudio

의존성 주입

유연하고 테스트 가능한 설계

현대 PHP 개발의 핵심 패턴 중 하나는 의존성 주입(DI)입니다. 객체가 필요로 하는 의존성을 내부에서 직접 생성하지 않고 외부에서 주입받는 방식입니다.

이를 통해 모듈 간의 결합도를 낮추고 단위 테스트(Mocking)를 쉽게 만들 수 있습니다. 최신 프레임워크들은 강력한 DI Container를 내장하여 객체의 생성과 주입을 자동화합니다.

의존성 주입 (Dependency Injection)

강결합 (내부에서 생성) UserController new Database(); new Logger(); new Mailer(); 테스트 불가 / 교체 어려움 의존성 주입 (외부에서 주입) UserController __construct( Database $db, Logger $log ) DI Container (미리 만들어진 객체 창고) 주입(Inject)
// 의존성 주입 (DI)
class UserService {
    public function __construct(
        private UserRepository $repository
    ) {}
}

// DI 컨테이너가 의존성을 자동으로 해결
$userService = $container->get(UserService::class);
의존성 주입 | Minstudio