搜尋

首頁  >  問答  >  主體

laravel - larave5中建立provider遇到不能實例化的問題

在larave5中建立自身的服務提供者,執行時,報:Target [App\IServices\TestServiceInterface] is not instantiable.的錯誤。程式碼結構如下,請各位幫忙分析一下原因:

我自己在app目錄下建立了一個目錄取名:IServices,用來存放自己服務相關的介面。實作都放在Services目錄下。
然後服務提供者都放在Providers目錄中。
完成以上步驟後,在app.php中登記服務提供者。
接著在HomeController中透過建構器注入,依賴介面:

#

在進行執行的時候,報了不能實例化的錯​​誤。
我就不明白,為什麼不能實例化呢?這個接口我已經實現了呀。並且也註冊了?是哪一個關鍵環節錯了?還是漏掉了?希望有大神能指點一下,謝謝!

伊谢尔伦伊谢尔伦2749 天前555

全部回覆(5)我來回復

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 16:58:43

    貼出來你的bug trace和service provider出來看看 否則再牛的大神也猜不出來你哪裡錯了。 直覺告訴我你應該是app.php裡面沒有加自己的provider

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-16 16:58:43

    寫法是沒錯的,但是你得告訴 ioc 你綁定的這個介面的實作是什麼,l4 中是 bind 方法, l5還沒細看,應該也有這個方法吧。否則 laravel 就不知道該注入什麼,自然光一個介面是無法實例化的了。
    應該找個地方寫上類似 App::bind('TestServiceInterface', 'TestService')

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 16:58:43

    我想弱弱的問一句
    接口可以被實例化嗎?

    回覆
    0
  • PHPz

    PHPz2017-05-16 16:58:43

    我也不知道為什麼重新通過composer了一個項目,按照之前的寫了一次,就可以了。有可能是我之前的專案在學習過程中改動了什麼地方吧。沒有檢查出來具體錯在什麼位置。遺憾

    回覆
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 16:58:43

    wonder哥~,這個問題解決沒?我已經快崩潰了

    經過自己搜尋答案,原來是composer在搞怪。看來得去了解coposer.json了

    回覆
    0
  • 取消回覆