在larave5中创建自身的服务提供者,运行时,报:Target [AppIServicesTestServiceInterface] is not instantiable.的错误。代码结构如下,请各位帮忙分析一下原因:
我自己在app目录下创建了一个目录取名:IServices,用来存放自己服务相关的接口。实现都放在Services目录下。
然后服务提供者都放在Providers目录中。
完成以上步骤后,在app.php中登记服务提供者。
然后在HomeController中通过构造器注入,依赖于接口:
在进行执行的时候,报了不能实例化的错误。
我就不明白,为什么不能实例化呢?这个接口我已经实现了呀。并且也注册了?是哪一个关键环节错了?还是漏掉了?希望有大神能够指点一下,谢谢!
贴出来你的bug trace和service provider出来看看 否则再牛的大神也猜不出来你哪里错了。 直觉告诉我你应该是app.php里面没有加你自己的provider
写法是没错的,但是你得告诉 ioc 你绑定的这个接口的实现是什么,l4 中是
bind
方法, l5还没细看,应该也有这个方法吧。否则 laravel 就不知道该注入什么,自然光一个接口是无法实例化的了。应该找一个地方写上类似
App::bind('TestServiceInterface', 'TestService')
我想弱弱的问一句
接口可以被实例化吗?
我也不知道为什么重新通过composer了一个项目,按照之前的写了一次,就可以了。有可能是我之前的项目在学习过程中改动了什么地方吧。没有检查出来具体错在什么位置上。遗憾
wonder哥~,这个问题解决没?我已经快崩溃了
经过自己搜索答案,原来是composer在搞怪。看来得去了解coposer.json了