PHP/Laravel 지식을 늘리기 위해 새로운 기능을 만들 때 인터페이스를 사용해 작업하려고 합니다.
상황 설정: 저희 회사는 한 해 동안 여러 차례 자동 이체 제공업체를 변경했으며 저는 향후 변경 사항을 더욱 "비계"로 만들기 위해 이 인터페이스를 만들고 싶었습니다.
내 코드 구조:
애플리케이션 인터페이스 DirectDebitInterface
으아아아애플리케이션 서비스 DirectDebitClientsBottomline
으아아아AppProvidersAppServiceProvider @register
으아아아현재 사용법은 작동하지만 적절하지 않은 것 같습니다. getAccount() 메서드를 사용하는 테스트 엔드포인트는 다음과 같습니다.
으아아아첫 번째 질문은, 클래스의 변수 설정에서 인터페이스를 사용하는 사람을 본 적이 없다는 것입니다.
두 번째 질문은 Livewire를 사용하여 데이터를 로드하고 있지만 인터페이스 사용 방법을 알 수 없다는 것입니다.
두 번째 질문에 대한 샘플 코드는 다음과 같습니다.
AppHttpLivewire 예
으아아아위 코드는 메소드에 매개변수 전달이 필요하기 때문에 실패하지만 인터페이스이기 때문에 클래스를 인스턴스화할 수도 없습니다.
내 지식에 기본적인 공백이 있는 것 같은 느낌 외에도... 올바른 방향으로 가고 있는 것 같지만 클래스/인터페이스 사용이 올바르게 설정되지 않았습니다.
메서드 내부에서 이 인터페이스를 호출하는 방법에 대한 제안 사항이 있습니까? 아니면 어딘가에서 잘못되고 있습니까?
저기,
당신은 메서드 기반 종속성 주입을 수행하고 있습니다. 이는 완벽하게 유효하지만 생성자 기반 종속성 주입보다 덜 일반적입니다. 둘 다 비슷한 결과를 얻습니다. 즉, 필요한 종속성을 주입합니다. 주요 차이점은 종속성의 범위(메서드 대 클래스)입니다.
표준 Laravel/PHP 환경에서 생성자 주입은 다음과 같습니다:
으아아아Livewire는
으아아아__construct
函数在Component
中,而是需要使用mount()
기능을 사용하지 않는다는 점에서 약간 다릅니다.bindings
에서 서비스 컨테이너를 올바르게 구성했다고 가정하면 모든 것이 제대로 작동할 것입니다.