laravel的一个依赖注入的例子中一段代码没看懂。

interface UserRepositoryInterface
{
    public function all();
}
class DbUserRepository implements UserRepositoryInterface
{
    public function all()
    {
        return User::all()->toArray();
    }
}
class UserController extends BaseController
{
    public function __construct(UserRepositoryInterface $users)
    {
        $this->users = $users;
    }

    public function getIndex()
    {
        $users=$this->users->all();
        return View::make('users.index', compact('users'));
    }
}

代码来源于fata.lapland.name/page/1.2_Build_A_...

以下内容看不懂,麻烦大家讲一讲
public function __construct(UserRepositoryInterface $users)
{
$this->users = $users;
}

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

@Richard852555 file
如果我没看错他写错了 :joy:
他说的是我们将该接口的实现,注入。但是他注入的不是该接口的实现,而是接口本身。

3年前 评论
讨论数量: 6

注入UserRepositoryInterface 需要和bind配合使用,理论上接口类不允许被实例化,容器在注入的时候会去解析bind对应的类文件,实例化后在注入!bind('UserRepositoryInterface ', DbUserRepository::class)

3年前 评论

一:是不是写错了应该是注入:DbUserRepository

二:楼上的那种说法。 :joy:

3年前 评论
Hollie (作者) 3年前
Richard852555 (楼主) 3年前

又看到你了,说一个学习laravel的方法吧,你们现在还有课程带你们学,真好~ 俺刚接触laravel的时候没人教,自己对着文档练手, 比如我就像下面这样练手,上面都可以写到里面,甚至是控制器,模型,所有一切~

Route::get('/', function () {
    return view('welcome');
});

然后改成

Route::get('/', function () {
    // 可以在里面写任何你想要调试的代码OR学习例子,甚至是类
    class a {
        public function __construct()
        {

        }
    }

    class b {

    }

    // 上面写法都是支持的,都是可以的,简单来说,你可以写一切你想写的,只要语法不出错
});
3年前 评论

@Richard852555 file
如果我没看错他写错了 :joy:
他说的是我们将该接口的实现,注入。但是他注入的不是该接口的实现,而是接口本身。

3年前 评论

App\Providers**Provider 肯定有bind

3年前 评论

我还以为是go的写法呢

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!