目标[App \ Repositories \ Setting \ SettingRepositoryContract]在构建[App \ Http \ Controllers \ SettingsController]时无法实例化

问题描述 投票:0回答:1

如何在构建[App \ Http \ Controllers \ SettingsController]时无法实例化目标[App \ Repositories \ Setting \ SettingRepositoryContract]。

[这里是我的控制器

namespace App\Http\Controllers;
use Auth;
use Session;
use App\Http\Requests;
use Illuminate\Http\Request;
use App\Repositories\Setting\SettingRepositoryContract;
class SettingsController extends Controller
{
protected $settings;
public function __construct(
        SettingRepositoryContract $settings
    )
    {
        $this->settings = $settings;

    }

SettingRepositoryContract

namespace App\Repositories\Setting;

interface SettingRepositoryContract
{
    public function getCompanyName();

    public function updateOverall($requestData);

    public function getSetting();
}

[注意:我是laravel的新手,无法理解此错误。因此,如果有人知道答案,请帮助我。

谢谢

laravel-5 controller
1个回答
0
投票

您需要以正确的方式来做:

SettingsRepositoryInterface

namespace App\Repositories;

interface SettingsRepositoryInterface
{
    public function getCompanyName();

    public function updateOverall($requestData);

    public function getSetting();
}

实施接口SettingsRepository

namespace App\Repositories;

use App\Repositories\SettingsRepositoryInterface;

class SettingsRepository implements SettingsRepositoryInterface
{
    public function getCompanyName()
    {
        // your code here
    }

    // all other functions here
}

创建新的服务提供者SettingsRepositoryServiceProvider

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class SettingsRepositoryServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->bind(
        'App\Repositories\SettingsRepositoryInterface',
        'App\Repositories\SettingsRepository');
    }
}

[通过将其添加到config/app.php来注册您的服务提供商

App\Providers\SettingsRepositoryServiceProvider::class,

最后是在您的控制器中

namespace App\Http\Controllers;

use Auth;
use Session;
use App\Http\Requests;
use Illuminate\Http\Request;
use App\Repositories\SettingsRepositoryInterface;

class SettingsController extends Controller
{
    protected $settings;

    public function __construct(SettingsRepositoryInterface $settings)
    {
        $this->settings = $settings;
    }
 }

供您参考:

https://laravel.com/docs/6.x/containerhttps://laravel.com/docs/6.x/providers

根据您的需要修改名称空间。

© www.soinside.com 2019 - 2024. All rights reserved.