【问题标题】:Laravel ReflectionException error : Repository doesn't existLaravel ReflectionException 错误:存储库不存在
【发布时间】:2014-04-14 18:37:36
【问题描述】:

我知道这个问题有点老了,但我仍然找不到正确的解决方案。我已经在互联网上搜索了几天,并尝试了几种解决方案,检查我的文件路径,更新 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'
);

我在 composer.json 中添加了 app/lib:

"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。 我错过了什么重要的事情吗?有什么建议吗?

【问题讨论】:

  • 您是否仔细检查过文件名?
  • 是的。我已经仔细检查了它们。我什至创建了一个新文件,用不同的名称命名它们,将它与 EUserRepository 放在同一个文件夹中,将它绑定到服务提供者中。和 laravel 仍然抛出同样的错误。
  • 嗨菲利普!为什么不将文件夹注册为 PSR-0 或 PSR-4?

标签: laravel


【解决方案1】:
namepsace Cribbb\Storage\User;

应该是命名空间吗?

编辑

存储库 (lib/Cribbb/Storage/User/EUserRepository.php) 有错字:

<?php

namepsace Cribbb\Storage\User;

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

【讨论】:

  • 不,不应该。我将 StorageServiceProvider.php 放在 lib/Cribbb/Storage/ 中,而我的存储库和接口放在 lib/Cribbb/Storage/User 中。无论如何,我已经尝试过你的建议。将命名空间更改为 Cribbb\Storage\User,laravel 抛出“找不到服务提供者”错误。然后我将文件移动到 lib/Cribbb/Storage/User ,更新了 app/config/app.php 中的“providers”aaray,dump-autoload,但仍然没有运气。 :(
  • 你在 lib/Cribbb/Storage/User/EUserRepository.php 中有一个错字
  • (@veelasky 您能否编辑答案以更具体地回答问题(也许提到文件,这是一个错字的事实),我很乐意 +1。)跨度>
  • @veelasky 哦,你是对的。一个错字,我的错。它有效...谢谢:D
  • @alexrussel 我也是。谁他妈给了他-1?我接受了答案。 :)
猜你喜欢
  • 2022-01-13
  • 2017-10-27
  • 2015-12-05
  • 2014-01-24
  • 2022-10-25
  • 1970-01-01
  • 2020-05-05
  • 2017-04-03
相关资源
最近更新 更多