Как прикрепить метод Controller к роуту?

203
29 августа 2021, 08:10

Всем привет. Начал потихоньку разбиратся с MVC . Создал модель и контроллер , а с роутингом тупо завис. Поставил себе такой роутер https://github.com/klein/klein.php - все работает , а прикрепить метод контроллера не получается.

index.php

 <?php
    require_once __DIR__ . '/vendor/autoload.php';
    $controller =new ProductController($model);
    $klein = new \Klein\Klein();
    $klein->respond('GET', '/hello-world', function () {
        return 'Hello World!';
    });
    $klein->dispatch();

В контроллере есть метод index (его проверил работает)

Answer 1

Судя по документации, контроллером является коллбек, указанный третьим параметром в методе Klein::respond. Стоит либо прописать код контроллера в этой функции (как указано в документации), либо передать Ваш метод ProductController::index в качестве коллбека call_user_func([$controller, 'index']) (считаю, так себе идея)

Также не очень идея инициализировать контроллер моделью. Лучше создать класс сервиса, в котором накодить бизнес-логику, и передавать его в роутинг (описано на гитхабе в разделе "Lazy services")

READ ALSO
Open server создание страниц

Open server создание страниц

Впервые делаю сайт на локальном сервере, так как в некоторых случаях мне нужно написать что-то на phpВ видео-уроках показано, что создавать...

359
Определить у кого больше записей php

Определить у кого больше записей php

Господа и дамы! Как вывести пользователя у кого больше выполненных заданийТаблица users и таблица quests_active (сюда записываются id заданий и id пользователей)...

93
Ошибка Notice: Undefined index: payment_method

Ошибка Notice: Undefined index: payment_method

Слегка отредактировал стандартный модуль OcStore 23 под себя, модуль вроде бы работает, всё считает, но выдаёт такую ошибку:

97