질문을 삭제하지 말아주세요.!
 
1
0
-1

생성자에서 __constructor(User $user)

위처럼 의존성을 주입 받는 클래스가 있다고 할 경우

이 클래스를 UserRepo 클래스라고 한다면,

이 UserRepo클래스를 디버깅 목적으로 route, 가령 web.php에서 접근하고 싶은데

$user = new User();

$userRepo = new UserRepo($user);

이렇게 사용하는 것이 바른 방법일까요?

    CommentAdd your comment...

    1 answer

    1.  
      3
      2
      1

      디버깅 용도로 web.php 에서 특정 클래스를 인스턴스화 해야 되는 경우를 말씀하시는 것 같은데요


      컨트롤러에서 주입되는(생성자 주입 or 메소드 주입) 말씀하신 UserRepo의 경우라면 그냥 타입힌트만 잘 해놓으면

      알아서 주입되니까 그냥 쓰기만 하면 되죠, 


      하지만 디버깅 시에 web.php 의 특정 라우트에서는 자동으로 주입이 안되서 어려움을 겪으시는 것 같네요.

      $userRepo = \App::make(UserRepo::class) 하시거나, 

      글로벌 헬퍼 함수로 제공되는 resolve

      $userRepo = resolve(UserRepo::class); 처럼 하시면 됩니다. 


      부연설명 하자면 컨트롤러에서 자동으로 주입되는걸 auto resolving (자동 의존성 주입)이라고 하는데

      결국에는 서비스 컨테이너가 의존성을 해결해주는 주체이기 때문인거죠.

      https://laravel.kr/docs/5.3/container 를 한번 읽어 보시면 도움 되시리라 생각됩니다. 

      1. bosskmk

        메뉴얼에 나와있었네요. 자세한 답변 감사드립니다.

      CommentAdd your comment...