찾다

 >  Q&A  >  본문

Laravel에서 패키지 작업을 재정의하는 방법

<p>문제 요약: 사용자 정의 작업과 패키지 작업의 네임스페이스가 동일하므로 설치된 패키지의 작업 클래스를 재정의할 수 없습니다. <br /><br />AppJobs 네임스페이스가 있는 일부 작업 클래스를 포함하는 패키지가 있다고 가정합니다. 이 패키지는 A 서비스와 B 서비스에 설치됩니다. 이제 패키지의 작업이 서비스 A에서 디스패치되고 서비스 B에서 처리됩니다. B 서비스에서는 패키지 작업의 핸들러 메서드를 재정의하기 위해 사용자 지정 작업을 만들었습니다. 그런데 문제는 커스텀 작업과 패키지 작업의 네임스페이스가 동일하기 때문에 디스패치된 작업을 처리하기 위해 우리의 커스텀 작업이 호출되지 않고, B 서비스에서는 패키지 작업을 사용해 처리한다는 점입니다.


P粉362071992P粉362071992513일 전621

모든 응답(1)나는 대답할 것이다

  • P粉295616170

    P粉2956161702023-08-01 09:35:33

    Laravel에서는 사용자 정의 작업에 대해 다른 네임스페이스를 지정하여 패키지의 작업을 재정의할 수 있습니다. 이렇게 하면 패키지의 작업 네임스페이스와의 충돌을 방지하고 사용자 정의 작업이 사용되도록 할 수 있습니다. 취할 수 있는 조치는 다음과 같습니다:

    으아악 으아악 으아악

    이 설정을 사용하면 작업이 서비스 A에서 발송되고 서비스 B에서 처리될 때 Laravel은 AppJobsCustom 네임스페이스에서 사용자 정의 작업을 찾습니다. 커스텀 작업이 발견되면 처리에 사용되며 핸들 메소드에 커스텀 로직을 추가할 수 있습니다. 사용자 정의 작업을 찾을 수 없으면 패키지 작업으로 대체됩니다.

    사용자 정의 네임스페이스 등록이 적용되려면 AppProvidersAppServiceProvider가 B 서비스에 올바르게 등록되고 로드되었는지 확인해야 한다는 점을 기억하세요.

    회신하다
    0
  • 취소회신하다