gpt4 book ai didi

php - 在 laravel Controller 构造函数中注入(inject)模型

转载 作者:行者123 更新时间:2023-12-02 01:03:07 25 4
gpt4 key购买 nike

我想知道以这种方式在 Controller 中使用我的模型类是否是一种好习惯:

public function __construct(Rule $rules)
{
$this->rules = $rules;
}

我不想在我的 Controller 中重复自己,所以我想知道什么是最好的方法

最佳答案

您使用依赖注入(inject) - 这是非常好的做法。

根据文档:
依赖注入(inject)是一个花哨的短语,本质上是这样的:通过构造函数或在某些情况下,“setter”方法将类依赖“注入(inject)”到类中。

namespace App\Http\Controllers;

use App\User;
use App\Repositories\UserRepository;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
/**
* The user repository implementation.
*
* @var UserRepository
*/
protected $users;

/**
* Create a new controller instance.
*
* @param UserRepository $users
* @return void
*/
public function __construct(UserRepository $users)
{
$this->users = $users;
}

/**
* Show the profile for the given user.
*
* @param int $id
* @return Response
*/
public function show($id)
{
$user = $this->users->find($id);

return view('user.profile', ['user' => $user]);
}
}

在此示例中,UserController 需要从数据源中检索用户。因此,我们将注入(inject)一个能够检索用户的服务。在这种情况下,我们的 UserRepository 很可能使用 Eloquent 从数据库中检索用户信息。但是,由于存储库是注入(inject)的,我们可以轻松地将其与另一个实现交换。在测试我们的应用程序时,我们还可以轻松地“模拟”或创建 UserRepository 的虚拟实现。

另请阅读 Service Container - 它是强大的工具:
https://laravel.com/docs/5.6/container

关于php - 在 laravel Controller 构造函数中注入(inject)模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49272877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com