Laravel ReflectionException错误:存储库不存在

时间:2014-04-14 09:05:05

标签: laravel

我知道这个问题有点老了,但我还是找不到合适的解决方案。我已经在互联网上搜索了几天,并尝试了几种解决方案,检查我的文件路径,更新composer.json并转储自动加载它,但仍然没有运气。我仍然收到以下错误:

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

这是我的代码。

控制器(app / controllers / 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;
    }
?>

接口(lib / Cribbb / Storage / User / 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);
    }



} 

?>

服务提供商(lib / Cribbb / Storage / StorageServiceProvider.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'
    );
  }

} ?>

我还在app / config / app.php中包含了服务提供商,如下所示:

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

我添加了app / lib 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。 我是否会错过重要的事情?任何建议的人?

1 个答案:

答案 0 :(得分:3)

namepsace Cribbb\Storage\User;

它应该是名称空间吗?

修改

存储库(lib / Cribbb / Storage / User / EUserRepository.php)有一个拼写错误:

<?php

namepsace Cribbb\Storage\User;

因为您没有使用自动加载,所以只需加载\EUserRepository类。 (根范围)