0

지난 몇 주 동안 의존성 주입, 변환, 기법, IoC 등에 대해 많이 읽었습니다 ... 제가 원리를 이해하지만 몇 가지 물건을 얻을 수는 없지만 지금까지.복잡한 작업에 대한 의존성 주입

일부 서비스에 가입해야하는 컨트롤러가 있다고 가정 해 보겠습니다. 우리에게 필요한 것은 다음과 같다 :

  1. 검증 요청 (월, 년 계획) 데이터베이스
  2. -
  3. 추가 구독 데이터베이스에 결제 송장을 추가 (결제 정보)
  4. 업데이트를 사용자가 지정하는 그가
  5. 프로세스 지불
  6. 표시 사용자에게 정보를 등록 성공 페이지
로 리디렉션됩니다 0

이것은 복잡한 작업입니다. 스키니 컨트롤러 및 팻 모델을 따라야하는 경우 어려울 것입니다. 많은 개발자들은 또한 4 가지 이상의 종속성이 있다면 클래스를 단순화하고 책임 원칙을 따라야한다고 설명합니다. 이것은 나를 위해 많은 질문을 가져온다.

  • 어떻게 진행하나요?
  • 컨트롤러를 어떻게 분리합니까?
  • 어떻게 테스트 할 수 있습니까?
  • 컨트롤러/클래스의 모든 종속성을 어떻게 전달합니까?
+0

작업 단위를 서비스로 옮긴다. 컨트롤러는 실제로 뷰의 일부이므로 오케스트레이션을 원할뿐입니다. – duffymo

답변

1

명령을 기반으로하는 Laracast/Commander를 사용하면 작업을 훨씬 쉽게 할 수 있습니다.

Jeffrey Way Commander (https://laracasts.com/search?q=commander&q-where=lessons)도 체크 아웃하십시오.

  1. 입력을 SubsribeUserCommandHandler 핸들 메소드를 호출
  2. 통화 검증
  3. 전화 $this->execute(New SubscribeUserCommand($email, $data1, $data2)) 가져 오기 : 같은

    컨트롤러가 보일 것이다. 명령은 핸들 메소드가 필요로하는 모든 것을 보유하는 간단한 데이터 객체입니다.

  4. 명령 처리기 내부에서 요청을 처리하는 다른 명령을 호출하십시오.
  5. 명령 처리기의 결과를보고 필요한 데이터를 사용자에게 표시하십시오.

Commander는 이벤트를 사용하여 이메일 또는 알림을 트리거 할 것을 적극 권장합니다.

업 :

컨트롤러에
  • 거의 종속
  • 읽을 수있는 컨트롤러
  • 시험 각 명령 별도로

다운 : - 더 클래스와

그것을 설정하는 데 필요한 offert

호프가 도움이되었거나 어떨까요? 당신의 문제를 해결하십시오. 나는 사용자 등록, 환영 전자 메일, 역할을받는 나의 프로젝트에서이 방법을 사용한다. 내 컨트롤러는 약 5 줄이고 나머지는 명령과 명령 처리기 안에있다.

+0

응답 해 주셔서 감사합니다. 그러나 가장 도움이되는 점은 laracast를 구독하고 애플리케이션 개발의 전체 흐름을 체크 아웃하는 것이 었습니다. 명령은 laravel 5에서 할 수있는 좋은 방법입니다. 제 질문은 일반적인 것이 아니기 때문에 larvel을 구체적으로 사용하지는 않지만 laracast에 대해 감사드립니다. 구독하는 것이 좋습니다! –

+0

예, 여기에 쓸 수있는 내용이 더 자세하게 나와 있습니다. 도움이 받아 들여지면 사람들은 추가 도움이 필요하면 laracast를 체크 아웃하는 것을 알고 있습니다. 커맨드 패턴은 전체 흐름을 정말로 깨끗하게합니다 :-) – DouglasDC3