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


P粉362071992
P粉362071992

모든 응답(1)
P粉295616170

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

으아악 으아악 으아악

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

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿