阅读(3382) (8)

Laravel 8 自动注入

2021-06-23 10:30:44 更新

另外,并且更重要的是,你可以简单地使用「类型提示」 的方式在类的构造函数中注入那些需要容器解析的依赖项,包括 控制器事件监听器中间件 等 。此外,你也可以在 队列任务handle 方法中使用「类型提示」注入依赖。实际上,这才是大多数对象应该被容器解析的方式。

例如,你可以在控制器的构造函数中添加一个 repository 的类型提示,然后这个 repository 将会被自动解析并注入类中:

<?php

namespace App\Http\Controllers;

use App\Models\Users\Repository as UserRepository;

class UserController extends Controller
{
    /**
     * user 仓储实例
     */
    protected $users;

    /**
     * 创建一个控制器实例
     *
     * @param  UserRepository  $users
     * @return void
     */
    public function __construct(UserRepository $users)
    {
        $this->users = $users;
    }

    /**
     * 使用给定的 id 显示 user
     *
     * @param  int  $id
     * @return Response
     */
    public function show($id)
    {
        //
    }
}