Laravel에서 인터페이스/계약을 사용하는 방법에 대한 심층 탐구
P粉517090748
P粉517090748 2024-02-17 14:27:04
0
1
374

PHP/Laravel 지식을 늘리기 위해 새로운 기능을 만들 때 인터페이스를 사용해 작업하려고 합니다.

상황 설정: 저희 회사는 한 해 동안 여러 차례 자동 이체 제공업체를 변경했으며 저는 향후 변경 사항을 더욱 "비계"로 만들기 위해 이 인터페이스를 만들고 싶었습니다.

내 코드 구조:

애플리케이션 인터페이스 DirectDebitInterface

으아아아

애플리케이션 서비스 DirectDebitClientsBottomline

으아아아

AppProvidersAppServiceProvider @register

으아아아

현재 사용법은 작동하지만 적절하지 않은 것 같습니다. getAccount() 메서드를 사용하는 테스트 엔드포인트는 다음과 같습니다.

으아아아

첫 번째 질문은, 클래스의 변수 설정에서 인터페이스를 사용하는 사람을 본 적이 없다는 것입니다.

두 번째 질문은 Livewire를 사용하여 데이터를 로드하고 있지만 인터페이스 사용 방법을 알 수 없다는 것입니다.

두 번째 질문에 대한 샘플 코드는 다음과 같습니다.

AppHttpLivewire 예

으아아아

위 코드는 메소드에 매개변수 전달이 필요하기 때문에 실패하지만 인터페이스이기 때문에 클래스를 인스턴스화할 수도 없습니다.

내 지식에 기본적인 공백이 있는 것 같은 느낌 외에도... 올바른 방향으로 가고 있는 것 같지만 클래스/인터페이스 사용이 올바르게 설정되지 않았습니다.

메서드 내부에서 이 인터페이스를 호출하는 방법에 대한 제안 사항이 있습니까? 아니면 어딘가에서 잘못되고 있습니까?

저기,

P粉517090748
P粉517090748

모든 응답(1)
P粉615829742

당신은 메서드 기반 종속성 주입을 수행하고 있습니다. 이는 완벽하게 유효하지만 생성자 기반 종속성 주입보다 덜 일반적입니다. 둘 다 비슷한 결과를 얻습니다. 즉, 필요한 종속성을 주입합니다. 주요 차이점은 종속성의 범위(메서드 대 클래스)입니다.

표준 Laravel/PHP 환경에서 생성자 주입은 다음과 같습니다:

으아아아

Livewire는 __construct函数在Component中,而是需要使用mount() 기능을 사용하지 않는다는 점에서 약간 다릅니다.

으아아아

bindings에서 서비스 컨테이너를 올바르게 구성했다고 가정하면 모든 것이 제대로 작동할 것입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!