2017-05-30 8 views
0

エラー:BindingResolutionExceptionとターゲットがインスタンス化ではありません

BindingResolutionException in Container.php line 887: 
Target [App\Helpers\Contracts\AccessTokenInterface] is not instantiable. 

ルート:

Route::get('/', '[email protected]'); 

コントローラー:

namespace App\Http\Controllers; 

use App\Helpers\Contracts\AccessTokenInterface; 

class LoginController extends Controller 
{ 

    public function handleProviderCallback(AccessTokenInterface $accessTokenInstance) 
    { 

     return $accessTokenInstance->getSomething(); 
    } 
} 

プロバイダ:

namespace App\Providers; 

use Illuminate\Support\ServiceProvider; 
use App\Helpers\Contracts\AccessTokenInterface; 
use AccessToken; 

class TokenServiceProvider extends ServiceProvider 
{ 
    protected $defer = true; 

    public function boot() 
    { 
     // 
    } 

    public function register() 
    { 
     $this->app->bind('AccessTokenInterface::class', function(){ 
      return new AccessToken(); 
     }); 
    } 
} 

ヘルパー:

namespace App\Helpers; 

use App\Helpers\Contracts\AccessTokenInterface; 

class AccessToken implements AccessTokenInterface 
{ 
    protected $something; 

    public function setSomething() 
    { 
     $something = 100; 
    } 

    public function __construct() 
    { 
     $this->setSomething(); 
    } 

    public function getSomething(){ 
     return $something; 
    } 

インターフェース:私はプロバイダでプロバイダとAccessTokenで登録した

namespace App\Helpers\Contracts; 

Interface AccessTokenInterface 
{ 

    public function getSomething(); 
    public function setSomething(); 
} 

ヘルパーのエイリアス。

私はいくつかのstackoverflow答えを読んだが解決策を見つけることができません。私はこれに新しいです。

どこが間違っていますか?

答えて

0

プロバイダでbind方法から引用符を削除します。

$this->app->bind(AccessTokenInterface::class, function(){ 
    return new AccessToken(); 
}); 
+0

まだ同じ:(...... – NaMo

+0

は 'ます$ this-> APP->バインド(AccessTokenInterface ::クラス、AccessTokenを試してみてください。 :class); ' –

+0

は再び働かなかった:(私は' php artisan clear-compiled'と 'config:clear'もやった。 – NaMo

関連する問題