Я пытаюсь выяснить, почему я получаю эту ошибку. Я следую за собой. Однако единственное отличие состоит в том, что на момент записи это было сделано с Laravel 4.25, и сейчас я использую Laravel 5.0.
Исключение BindingResolutionException в строке Container.php 785:
Цель [App \ Repositories \ User \ UserRepository] не может быть создана.
<?php
namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Repositories\User\UserRepository;
use Illuminate\Http\Request;
class UsersController extends Controller {
private $userRepository;
public function __construct(UserRepository $userRepository) {
$this->userRepository = $userRepository;
}
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index() {
$users = $this->userRepository->getAll();
return $users;
}
}
<?php
namespace App\Repositories\User;
use App\Repositories\EloquentRepository;
class EloquentUserRepository extends EloquentRepository implements UserRepository
{
private $model;
function __construct(User $model) {
$this->model = $model;
}
}
<?php
namespace App\Repositories\User;
interface UserRepository {
public function getAll();
}
<?php
namespace App\Repositories;
abstract class EloquentRepository {
public function getAll() {
return $this->model->all();
}
public function getById() {
return $this->model->findOrFail($id);
}
}
Вы тип намекаете на интерфейс, а не на сам класс. Эта ошибка возникает из-за того, что Laravel не может связать интерфейс, поскольку привязка должна быть инстанцируемой. Абстрактные классы или интерфейсы недопустимы, если Laravel не знает конкретный (инстанцируемый) класс для замены абстрактного класса / интерфейса.
Вам нужно будет связать EloquentUserRepository
к интерфейсу:
App::bind('UserRepository', 'EloquentUserRepository');
Других решений пока нет …