Автоматически разрешать зависимости в laravel без передачи параметров в конструктор? - PullRequest
1 голос
/ 19 марта 2020

У меня есть laravel поисковый помощник, мой вспомогательный класс нуждается в laravel объекте запроса и другом классе, называемом QueryFilters, я хочу включить эти зависимости ВНУТРИ самого класса, поэтому мне не нужно передавать их как параметры:

Этот вспомогательный класс выглядит следующим образом:

<?php
namespace App\Helpers;
use App\Filters\QueryFilters;
use App\Filters\Filterable;
use Illuminate\Http\Request;


class Search
{


    public function __construct(Request $request, QueryFilters $filters)
    {
        $this->request = $request;
        $this->filters = $filters;
    }

    public static function search( $model, $relationships = [] )
    {
        $requestModel = $request->model;

        $model = app("App\Model\{$requestModel}");

        $results = $model::search($request->input('search'), '')->get(); 

        if(!$results->isEmpty())
        {
            $ids = implode(',', $results->pluck('id')->toArray());
            $filters->merge(['whereIn' => $ids]);    
        }

        $results = $model::filter($filters)->with($relationships)->paginate(10);

        return $results; 
    }


}

В моем методе контроллера, когда я создаю экземпляр класса поиска, он говорит мне, что мне нужно передать два аргумента классу, есть ли способ автоматически добавить эти зависимости ВНУТРИ моего класса, чтобы мне не нужно было каждый раз передавать их? Я думал, что включение их в конструктор моего класса автоматически разрешит их для меня, но, очевидно, это не так:

$search = new Search();
$products = $search->search('Product', ['productcategory']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...