Heim > Fragen und Antworten > Hauptteil
Erstellen Sie Ihren eigenen Dienstanbieter in larave5. Beim Ausführen wird eine Fehlermeldung angezeigt: Ziel [AppIServicesTestServiceInterface] ist nicht instanziierbar. Die Codestruktur ist wie folgt. Bitte helfen Sie bei der Analyse des Grundes:
Ich habe im App-Verzeichnis ein Verzeichnis mit dem Namen „IServices“ erstellt, um meine dienstbezogenen Schnittstellen zu speichern. Die Implementierungen werden im Services-Verzeichnis abgelegt.
Anschließend werden die Dienstanbieter im Anbieterverzeichnis abgelegt.
Registrieren Sie nach Abschluss der oben genannten Schritte den Dienstanbieter in app.php.
Fügen Sie es dann je nach Schnittstelle über den Konstruktor in HomeController ein:
Während der Ausführung wurde ein Fehler gemeldet, der nicht instanziiert werden kann.
Ich verstehe nicht, warum kann es nicht instanziiert werden? Ich habe diese Schnittstelle bereits implementiert. Und auch registriert? Welcher Schlüssellink ist falsch? Oder verpasst? Ich hoffe, jemand kann mir einen Rat geben, danke!
曾经蜡笔没有小新2017-05-16 16:58:43
贴出来你的bug trace和service provider出来看看 否则再牛的大神也猜不出来你哪里错了。 直觉告诉我你应该是app.php里面没有加你自己的provider
巴扎黑2017-05-16 16:58:43
写法是没错的,但是你得告诉 ioc 你绑定的这个接口的实现是什么,l4 中是 bind
方法, l5还没细看,应该也有这个方法吧。否则 laravel 就不知道该注入什么,自然光一个接口是无法实例化的了。
应该找一个地方写上类似 App::bind('TestServiceInterface', 'TestService')
PHPz2017-05-16 16:58:43
我也不知道为什么重新通过composer了一个项目,按照之前的写了一次,就可以了。有可能是我之前的项目在学习过程中改动了什么地方吧。没有检查出来具体错在什么位置上。遗憾
过去多啦不再A梦2017-05-16 16:58:43
wonder哥~,这个问题解决没?我已经快崩溃了