2016-03-02 1 views
0

Je suis très nouveau dans le monde "Laravel", donc je peux me tromper dans les bases. J'essaye de configurer un projet avec le modèle de conception «Loosely Coupled». Je l'ai regardé dans des tutoriels suivants:Comment configurer le motif de conception "Loosely Coupled" dans "Laravel"

http://vegibit.com/laravel-repository-pattern/

http://heera.it/laravel-repository-pattern#.Vtaepfl97IU

et aussi examiné les sujets suivants de SO:

Laravel 5 - Interface is not instantiable

Laravel ReflectionException error : Repository doesn't exist

mais n'a pas eu le résultats.

Voici donc ma structure d'application:

-app 

     -Providers 
       IOCProvider 
     -Repositories 
      -Abstracts 
        IUserRepository 
      -Concrete 
        UserRepository 

Voici "IUserRepository":

<?php 
    namespace App\Repositories\Abstracts; 

    interface IUserRepository { 
      public function getUserByID($ID); 

     } 

Et 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'); 

      } 
     } 

Et composer.json:

"autoload": { 
    "classmap": [ 
     "database" 
    ], 
    "psr-4": { 
     "App\\": "app/", 
     "App\\Repositories\\Abstracts":"app/Repositories/Abstract", 
     "App\\Repositories\\Concrete":"app/Repositories/Concrete" 
    } 
}, 

Maintenant, je reçois cette erreur:

ReflectionException in Container.php line 798: 
    Class App\Repositories\Abstracts\IUserRepository does not exist 

S'il vous plaît me guider ce que je fais mal.

Votre aide serait grandement appréciée.

Merci.

+0

Je pense que le couplage lâche est pas un modèle de conception. C'est un principe/une recommandation. –

Répondre

1

Dans votre UserRepository essayer de le changer: use App\Repositories\Abstracts à ceci: use App\Repositories\Abstracts\IUserRepository

Sur une note de côté, comme vous êtes nouveau Laravel - aller à Laracasts.com. Il n'y a pas de meilleure ressource pour les tutoriels que ce site. C'est la recommandation de facto pour tous les nouveaux larvaires. (Par exemple hre est un bon ensemble des didacticiels vidéo de début libre: https://laracasts.com/series/laravel-5-from-scratch)

Bonne chance

+0

Merci pour votre réponse, j'ai essayé ce que vous avez suggéré mais toujours le même résultat. – user2517610

+0

Attendez ... J'ai raté quelque chose d'un pas. DId vous enregistrez le fournisseur de services dans votre application dans le fichier config \ app.php? – Landjea

+0

Oui, je l'ai enregistré avec cette ligne: App \ Providers \ IocProvider :: class, – user2517610