如何在构建[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的新手,无法理解此错误。因此,如果有人知道答案,请帮助我。
谢谢
您需要以正确的方式来做:
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/container&https://laravel.com/docs/6.x/providers
根据您的需要修改名称空间。