如何设置"松散耦合"设计模式在" Laravel"

时间:2016-03-02 13:58:38

标签: php laravel-5 loose-coupling

我对“Laravel”世界很陌生,所以我在基础知识上可能出错了。

我正在尝试使用“Loosely Coupled”设计模式设置项目。我查看了以下教程:

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

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

并且还查看了SO的以下主题:

Laravel 5 - Interface is not instantiable

Laravel ReflectionException error : Repository doesn't exist

但无法得到结果。

所以这是我的应用程序结构:

    -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

请指导我做错了什么。

真的很感激你的帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

在您的UserRepository中尝试更改此内容:use App\Repositories\Abstracts 对此:use App\Repositories\Abstracts\IUserRepository

旁注,因为您是Laravel的新手 - 请访问Laracasts.com。那个站点的教程没有更好的laravel资源。这是所有新laravel人的事实建议。 (例如,hre是一套很好的免费开始laravel视频教程:https://laracasts.com/series/laravel-5-from-scratch

祝你好运