Как реализовать интерфейс к контроллеру?

Я пытаюсь реализовать интерфейс для контроллера, но когда я пытаюсь это сделать, запрос преобразуется в строку. Вот код контроллера:

class FilesController extends Controller implements Repository
{
    function __construct()
    {
        $this->factory = new RepositoryFactoryImp();
    }


    public function index($request)
    {
        $repository = $this->factory->createRepository($request->type_repository);

        return $repository->getFilesList($request);
    }
}

Вот код интерфейса:

interface Repository
{
    public function index(GetFileListRequest $request);
}

Тогда я получаю следующую ошибку:

ErrorException: попытка получить свойство type_repository не-объекта в файле C: \ xampp \ htdocs \ pocs \ repository \ app \ Http \ Controllers \ FilesController.php в строке 31

Я делаю dd (запрос $); и результатом является строка, строка - это содержимое переменной type_repository маршрута:

Route::get('files/{type_repository}', 'filesController@index');

В чем может быть проблема? Возможно ли реализовать интерфейс к контроллеру?


person jdoe1980    schedule 19.11.2019    source источник


Ответы (1)


Для начала вы не внедрили запрос в свой контроллер:

class FilesController extends Controller implements Repository
{
    // ...


    public function index($request) // <-----
    { //                  ^^^^^^^^^
        $repository = $this->factory->createRepository($request->type_repository);

        return $repository->getFilesList($request);
    }
}

Попробуйте сделать это вместо этого:

use Illuminate\Http\Request;

// ...

    public function index(Request $request) { ... }
    //                    ^^^^^^^^^^^^^^^^

Примечание

В качестве наблюдения вы объявили метод index() в своем интерфейсе, но вызываете метод createRepository() в своей реализации.

person Kenny Horna    schedule 19.11.2019
comment
Ага! Это проблема. Спасибо! - person jdoe1980; 20.11.2019
comment
@ jdoe1980 рад помочь, вы можете принять ответ прямо сейчас :) - person Kenny Horna; 20.11.2019