gpt4 book ai didi

php - 构建 [Controller] 时目标 [Interface] 不可实例化

转载 作者:行者123 更新时间:2023-12-01 22:46:16 25 4
gpt4 key购买 nike

我正在使用 Laravel 9,我有一个这样的 Controller :

use App\Repositories\HomeRepositoryInterface;

class HomeController extends Controller
{
private $homeRespository;

public function __construct(HomeRepositoryInterface $homeRepository)
{
$this->homeRespository = $homeRepository;
}

...

这是HomeRepositoryInterface:

<?php
namespace App\Repositories;

interface HomeRepositoryInterface
{
public function newest();
}

这是 HomeRepository 本身:

<?php
namespace App\Repositories;

use App\Models\Question;

class HomeRepository implements HomeRepositoryInterface
{
public function newest()
{
return $ques = Question::orderBy('created_at', 'DESC')->paginate(10);
}
}

但是现在我得到这个错误:

目标 [App\Repositories\HomeRepositoryInterface] 在构建 [App\Http\Controllers\HomeController] 时不可实例化。

那么这里出了什么问题呢?

我该如何解决这个问题?

最佳答案

你好像没有介绍服务容器

为此,最好如下所示创建服务提供者并将存储库类引入容器。

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\Repositories\HomeRepositoryInterface;
use App\Repositories\HomeRepository;

class RepositoryServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
// Bind Interface and Repository class together
$this->app->bind(HomeRepositoryInterface::class, HomeRepository::class);
}
}

接下来,您应该在 config/app.php 文件中引入这个服务提供者。

'providers' => [
...
...
...
App\Providers\RepositoryServiceProvider::class,
],

关于php - 构建 [Controller] 时目标 [Interface] 不可实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75273172/

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