larave5中创建provider遇到不能实例化的问题

在larave5中创建自身的服务提供者,运行时,报:Target [App\IServices\TestServiceInterface] is not instantiable.的错误。代码结构如下,请各位帮忙分析一下原因:
图片描述

我自己在app目录下创建了一个目录取名:IServices,用来存放自己服务相关的接口。实现都放在Services目录下。
然后服务提供者都放在Providers目录中。
完成以上步骤后,在app.php中登记服务提供者。
然后在HomeController中通过构造器注入,依赖于接口:
图片描述

在进行执行的时候,报了不能实例化的错误。
我就不明白,为什么不能实例化呢?这个接口我已经实现了呀。并且也注册了?是哪一个关键环节错了?还是漏掉了?希望有大神能够指点一下,谢谢!

阅读 5.8k
评论
    5 个回答

    贴出来你的bug trace和service provider出来看看 否则再牛的大神也猜不出来你哪里错了。 直觉告诉我你应该是app.php里面没有加你自己的provider

      写法是没错的,但是你得告诉 ioc 你绑定的这个接口的实现是什么,l4 中是 bind 方法, l5还没细看,应该也有这个方法吧。否则 laravel 就不知道该注入什么,自然光一个接口是无法实例化的了。
      应该找一个地方写上类似 App::bind('TestServiceInterface', 'TestService')

        我想弱弱的问一句
        接口可以被实例化吗?

          我也不知道为什么重新通过composer了一个项目,按照之前的写了一次,就可以了。有可能是我之前的项目在学习过程中改动了什么地方吧。没有检查出来具体错在什么位置上。遗憾

            • 1
            • 新人请关照

            wonder哥~,这个问题解决没?我已经快崩溃了

            经过自己搜索答案,原来是composer在搞怪。看来得去了解coposer.json了

            该答案已被忽略,原因:

              撰写回答

              登录后参与交流、获取后续更新提醒

              相似问题
              推荐文章