>  Q&A  >  본문

Laravel에서 인터페이스/계약을 사용하는 방법에 대한 심층 탐구

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

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

내 코드 구조:

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

으아아아

애플리케이션 서비스 DirectDebitClientsBottomline

으아아아

AppProvidersAppServiceProvider @register

으아아아

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

으아아아

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

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

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

AppHttpLivewire 예

으아아아

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

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

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

저기,

P粉517090748P粉517090748219일 전323

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

  • P粉615829742

    P粉6158297422024-02-18 11:23:42

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

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

    으아아아

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

    으아아아

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

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