2014-04-14 5 views
0

Я знаю этот вопрос lil bit old, но я все еще не могу найти правильное решение. Я искал интернет в течение нескольких дней и пробовал несколько решений, проверял путь к файлам, обновлял композитор.json и дамп-автозагрузку, но все равно не повезло. Я все еще получаю следующую ошибку:Laravel ReflectionException error: Репозиторий не существует

ReflectionException 
Class Cribbb\Storage\User\EUserRepository does not exist 

вот мой код.

Контроллер (приложение/контроллеры/UsersControllers.php):

<?php 

use Cribbb\Storage\User\IUserRepository as User; 

class UsersController extends \BaseController { 

    /** 
    * Display a listing of the resource. 
    * 
    * @return Response 
    */ 

    public function __construct(User $user) 
    { 
     $this->user = $user; 
    } 
?> 

Интерфейс (Библиотека/Cribbb/хранение/Пользователь/IUserRepository.php):

<?php 

namespace Cribbb\Storage\User; 

interface IUserRepository{ 

    public function all(); 
    public function find($id); 
    public function create($input); 
} 

?> 

Хранилище (Lib /Cribbb/Storage/User/EUserRepository.php):

<?php 

namepsace Cribbb\Storage\User; 

use User; 

class EUserRepository implements IUserRepository 
{ 

    public function all() 
    { 
     return User::all(); 
    } 

    public function find($id) 
    { 
     return User::find($id); 
    } 

    public function create($input) 
    { 
     return User::create($input); 
    } 



} 

?> 

служба Provider (Библиотека/Cribbb/хранение/StorageServiceProv ider.php):

<?php 

namespace Cribbb\Storage; 

use Illuminate\Support\ServiceProvider; 

class StorageServiceProvider extends ServiceProvider { 

    public function register() 
    { 
    $this->app->bind(
     'Cribbb\Storage\User\IUserRepository', 
     'Cribbb\Storage\User\EUserRepository' 
    ); 
    } 

} ?> 

я также включал поставщика услуг в приложение/Config/app.php следующим образом:

'providers' => array(
... 
'Cribbb\Storage\StorageServiceProvider' 
); 

и я добавил приложение/Пб composer.json:

"autoload": { 
     "classmap": [ 
      "app/commands", 
      "app/controllers", 
      "app/models", 
      "app/database/migrations", 
      "app/database/seeds", 
      "app/tests/TestCase.php", 
      "app/lib" 
     ] 
    } 

Нечетная часть об этом, в то время как IUserRepository и EUserRepository находятся в одной папке, Laravel только обнаруживает IUserRepository. Кажется, не может найти EUserRepository. Пропустить что-то важное? любые советы ребята?

+0

Вы проверили имена файлов? –

+0

Да. Я проверил их дважды. Я даже создаю новый файл, назову их с другим именем, поставлю его в ту же папку вместе с EUserRepository, привяжу его к поставщику услуг. и laravel все еще бросает ту же ошибку. – under5hell

+0

Hi Philip! Почему вы не регистрируете папку как PSR-0 или PSR-4? – hannesvdvreken

ответ

1
namepsace Cribbb\Storage\User; 

должно ли оно быть пространством имен?

EDIT

Репозиторий (Библиотека/Cribbb/хранение/Пользователь/EUserRepository.php) имеет опечатка:

<?php 

namepsace Cribbb\Storage\User; 

Потому что вы не использовали самозарядные он просто загружает в \EUserRepository класс , (область корня)

+0

Нет, не следует. Я поместил StorageServiceProvider.php в lib/Cribbb/Storage/в то время как мои репозитории и интерфейс в lib/Cribbb/Storage/User. Во всяком случае, я пробовал ваш совет. изменить пространство имен в Cribbb \ Storage \ User, laravel бросить меня «не может найти служебную ошибку». затем я переместил файл в lib/Cribbb/Storage/User, обновил «провайдеры» в app/config/app.php, dump-autoload, но все равно не повезло. :( – under5hell

+0

вы получаете опечатку там в lib/Cribbb/Storage/User/EUserRepository.php – veelasky

+2

(@veelasky вы можете отредактировать ответ, чтобы быть немного более конкретным для ответа на проблему (возможно, упоминайте файл, тот факт, что это typo), и я буду счастлив +1.) – alexrussell

Смежные вопросы