Я очень новичок в мире «Laravel», поэтому могу ошибаться в самых основах.
Я пытаюсь настроить проект по шаблону «Слабосвязанная». Я изучил следующие уроки:
http://vegibit.com/laravel-repository-pattern/
http://heera.it/laravel-repository-pattern#.Vtaepfl97IU
а также просмотрел следующие темы SO:
Laravel 5 — интерфейс не может быть создан
Laravel ReflectionException error: репозиторий не существует
но не смог получить результаты.
Итак, вот моя структура приложения:
-app
-Providers
IOCProvider
-Repositories
-Abstracts
IUserRepository
-Concrete
UserRepository
Вот «IUserRepository»:
<?php
namespace App\Repositories\Abstracts;
interface IUserRepository {
public function getUserByID($ID);
}
И UserRepository:
<?php
namespace App\Repositories\Concrete;
use App\Repositories\Abstracts;
use app\Model;
class UserRepository implements IUserRepository {
public function getUserByID($id){
$user= User::find(1);
return $user;
}
}
IOCProvider.php:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class IocProvider extends ServiceProvider {
public function register()
{
$this->app->bind('App\Repositories\Abstracts\IUserRepository', 'App\Repositories\Concrete\UserRepository');
}
}
И composer.json:
"autoload": {
"classmap": [
"database"],
"psr-4": {
"App\\": "app/",
"App\\Repositories\\Abstracts":"app/Repositories/Abstract",
"App\\Repositories\\Concrete":"app/Repositories/Concrete"}
},
Теперь я получаю эту ошибку:
ReflectionException in Container.php line 798:
Class App\Repositories\Abstracts\IUserRepository does not exist
Пожалуйста, объясните мне, что я делаю не так.
Ваша помощь будет по достоинству оценена.
Благодарю.
В вашем UserRepository попробуйте изменить это: use App\Repositories\Abstracts
к этому : use App\Repositories\Abstracts\IUserRepository
На заметку, что вы новичок в Laravel — перейдите на Laracasts.com. Нет лучшего ресурса для учебников, чем этот сайт. Это рекомендация по умолчанию для всех новых людей. (Например, hre — это хороший набор бесплатных начинающих видеоуроков по Laravel: https://laracasts.com/series/laravel-5-from-scratch)
Удачи
Других решений пока нет …