Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Laravel Nova行动中使用接口存储库?_Php_Laravel_Laravel Nova - Fatal编程技术网

Php 如何在Laravel Nova行动中使用接口存储库?

Php 如何在Laravel Nova行动中使用接口存储库?,php,laravel,laravel-nova,Php,Laravel,Laravel Nova,我正在使用来管理我的资源,我想知道如何在Nova Action中使用接口?由于接口不能实例化,我想知道如何在操作中使用接口 在我的控制器构造函数中,我创建了我的存储库,然后我可以在我的函数中使用它,但我不知道如何在Laravel操作中执行同样的操作 你知道我该怎么做吗 我的控制器中的一个示例 private $myRepository; public function __construct( MyRepositoryInterface $myRepository, ) { $

我正在使用来管理我的资源,我想知道如何在Nova Action中使用接口?由于接口不能实例化,我想知道如何在操作中使用接口

在我的控制器构造函数中,我创建了我的存储库,然后我可以在我的函数中使用它,但我不知道如何在Laravel操作中执行同样的操作

你知道我该怎么做吗

我的控制器中的一个示例

private $myRepository;

public function __construct(
    MyRepositoryInterface $myRepository,
)
{
    $this->myRepository = $myRepository;
}
然后在一个函数中,我可以做如下的事情

public function destroy($id)
{
    $this->myRepository->delete($id);

    return response()->json( array("message" => "success") );
}
现在在我的新星行动中,我要做的是

public function handle(ActionFields $fields, Collection $models)
{
    foreach ($models as $model)
    {
        $myRepository = new MyRepositoryInterface(); // This doesn't work obviously
        $myRepository->customManipulation($model->id);
        $this->markAsFinished($model);
    }
}
知道我如何使用我的存储库吗


谢谢

您可以执行
$myRepository=App::make(MyRepositoryInterface::class),IoC将解析它并实例化一个类实例

我假设您已经将类绑定到接口:

App::bind('MyRepositoryInterface', 'MyRepository');

MyRepository
是否实现了
MyRepositoryInterface
接口?你说
newmyrepository()
不起作用,但这只是一个构造函数,所以如果
MyRepository
是一个类,并且它不会
抛出
,它就不会失败。