larave5에서 자신만의 서비스 공급자를 생성하세요. 실행 시 다음 오류 메시지가 나타납니다. Target [AppIServicesTestServiceInterface]는 인스턴스화할 수 없습니다. 코드 구조는 다음과 같습니다. 이유 분석에 도움을 주세요.
서비스 관련 인터페이스를 저장하기 위해 앱 디렉터리에 IServices라는 디렉터리를 만들었습니다. 구현은 Services 디렉토리에 위치합니다.
그런 다음 서비스 공급자는 공급자 디렉터리에 배치됩니다.
위 단계를 완료한 후 app.php에 서비스 제공자를 등록합니다.
그런 다음 인터페이스에 따라 HomeController의 생성자를 통해 주입합니다.
실행 중에 인스턴스화할 수 없는 오류가 보고되었습니다.
이해가 안 돼요. 왜 인스턴스화할 수 없나요? 나는 이미 이 인터페이스를 구현했습니다. 그리고 등록도 됐나요? 어떤 키 링크가 잘못되었나요? 아니면 놓쳤나요? 누군가 나에게 조언을 해줄 수 있기를 바랍니다. 감사합니다!
버그 추적 및 서비스 제공업체를 게시하고 살펴보세요. 그렇지 않으면 아무리 훌륭하더라도 어디에서 잘못되었는지 추측할 수 없습니다. 내 직관에 따르면 아마도 app.php
에 자신의 공급자를 추가하지 않았을 것입니다.글은 정확하지만 바인딩하려는 인터페이스의 구현이 무엇인지 ioc에 알려야 합니다. l4에서는 그렇습니다.
bind
方法, l5还没细看,应该也有这个方法吧。否则 laravel 就不知道该注入什么,自然光一个接口是无法实例化的了。应该找一个地方写上类似
App::bind('TestServiceInterface', 'TestService')
심술궂은 질문을 하고 싶다
인터페이스를 인스턴스화할 수 있나요?
왜 작곡가를 통해 프로젝트를 다시 승인했는지 모르겠습니다. 한 번만 썼는데 괜찮 았습니다. 학습 과정에서 이전 프로젝트에서 뭔가 변경되었을 수도 있습니다. 정확히 어디에서 오류가 발생하는지 찾지 못했습니다. 후회
형님 궁금해요~, 이 문제는 해결됐나요? 쓰러질 것 같아
직접 답을 찾아본 결과 작곡가가 이상한 짓을 하고 있다는 사실이 밝혀졌습니다. coposer.json을 이해해야 할 것 같습니다