2016-07-11 22 views
0

Ich habe eine Schnittstelle Abhängigkeit injizieren Frage, die Fehlermeldung aussehen kann nicht die Klasse zu fangen, haben keine ideale?Laravel Schnittstelle Abhängigkeit injizieren

Fehlermeldung:

FatalThrowableError in UserController.php line 27: 
Class 'App\Http\Controllers\App' not found 

Mein Ordnerpfad:

enter image description here

UserController.php

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use Domain\Services\Social\SocialService; 
use Domain\Services\Social\SocialInterface; 
use Domain\Services\Social\Facebook; 

class UserController extends Controller 
{ 
    public function fb(Request $request) 
    { 
    App::bind(SocialInterface::class, Facebook::class); 
    $target = App::make(SocialService::class); 
    return $target ->getCallbackData($request); 
    } 
} 

SocialService.php

namespace Domain\Services\Social; 

class SocialService 
{ 
    public function getCallbackData(SocialInterface $social,$request) 
    { 
     return $social->getCallbackData($request); 
    } 
} 

Facebook.php

namespace Domain\Services\Social; 

class Facebook implements SocialInterface 
{ 

    public function getCallbackData($request) 
    { 
    //Somethig inside... 
    } 
} 

Antwort

0
public function fb(Request $request) 
    { 
    \App::bind(SocialInterface::class, Facebook::class); 
    $target = \App::make(SocialService::class); 
    return $target ->getCallbackData($request); 
    } 

es mit Backslash Versuchen.

+0

danke, es funktioniert! aber, warum sollte ein Schrägstrich fornt es hinzufügen? – Fan

+0

Da Sie ein Objekt im Namespace 'App' aufrufen wollen, haben Sie jedoch in Ihrer Controller-Datei den Namespace' App \ Http \ Controllers' definiert, so dass Laravel versucht, ein Objekt in diesem Namespace zu laden. –