【问题标题】:How to setup "Loosely Coupled" design pattern in "Laravel"如何在“Laravel”中设置“松耦合”设计模式
【发布时间】:2016-03-02 13:58:37
【问题描述】:

我对“Laravel”世界很陌生,所以我可能在最基本的方面是错误的。

我正在尝试使用“松散耦合”设计模式设置项目。我研究了以下教程:

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

        }

和用户存储库:

    <?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

请指导我做错了什么。

非常感谢您的帮助。

谢谢。

【问题讨论】:

  • 我认为松散耦合不是一种设计模式。这是一个原则/建议。

标签: php laravel-5 loose-coupling


【解决方案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

祝你好运

【讨论】:

  • 感谢您的回复,我已经尝试了您的建议,但结果仍然相同。
  • 等等...我错过了一步。您是否在 config\app.php 文件中在您的应用中注册了服务提供者?
  • 是的,我已经用这一行注册了:App\Providers\IocProvider::class,
  • 在将 PSR-4 行添加到 composer.json 之后,您是否使用 composer update 或 composer dump-autoload 更新了自动加载器?
  • 您的 composer.json 中有一个错字。您有 Abstract 而不是 Abstracts
猜你喜欢
  • 1970-01-01
  • 2010-11-28
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-01
相关资源
最近更新 更多