2016-09-16 5 views
-4

В чем разница междуBinding Разрешение Laravel 5.3

$this->app->when('App\Http\Controllers\StaffController') 
     ->needs('App\Repositories\User\UserInterface') 
     ->give('App\Repositories\User\StaffRepository'); 

Это один работает!

$this->app->when(StaffController::class) 
     ->needs(UserInterface::class) 
     ->give(StaffRepository::class); 

Но этот не работает. В чем проблема?

+1

Я предположил бы, что это проблема Пространства имен. Используется ли 'App \ Http \ Controllers \ StaffController :: class' вместо' StaffController :: class' и т. Д.? Какие ошибки вы получаете? – ceejayoz

+0

Нет, все равно это не работает. – Rbex

+0

** Какие ошибки вы получаете? ** – ceejayoz

ответ

1

Учитывая, что это работает:

$this->app->when(\App\Http\Controllers\StaffController::clas‌​s) 
    ->needs(\App\Repos‌​itories\User\UserInt‌​erface::class) 
    ->give‌​(\App\Repositories\U‌​ser\StaffRepository:‌​:class); 

у вас есть проблемы пространства имен. Вы можете использовать это как есть с ведущими \ с, но шансы положить это в верхней части файла разрешит его:

use App\Http\Controllers\StaffController; 
use App\Repos‌​itories\User\UserInt‌​erface; 
use App\Repositories\U‌​ser\StaffRepository;