Не могу настроить routing MVC

316
31 августа 2021, 04:50

Всем привет. Пытаюсь создать простую MVC . C Controller и Model нет проблем, что не могу сказать с routing. Перелопатил кучу материала - но собрать в кучу не могу. Нужно очень простым способом при переходе '/action' выполнить Controller@action

index.php

$obj = new ParseUrl();
$obj->run();

ParseUrl

class ParseUrl
{
    public function getRoute()
    {
        $uri = $_SERVER['REQUEST_URI'];
        return $uri;
    }
    public function run()
    {
        return $this->getRoute();
    }
}

Путь я получаю (при вводе http://localhost/address возвращает строку address)но куда дальше?

Answer 1

Цель роутера, не получить урл который ввел пользователь (т.к. его можно получить просто из $_SERVER или $_REQUEST), а в том что бы его разобрать. т.е.: - получаем урл что ввел пользователь. - разделяем на контроллер и екшен. - проверяем есть ли у нас такой контроллер, если нет, то запускаем дефолтный типа для 404. - если такой есть, отдаем

public function getRoute()
    {
        $uri = $_SERVER['REQUEST_URI'];
        return array_pop(explode('/', $uri));
    }
    public function run()
    {
        $action = $this->getRoute();
        $controller = lcfirst($action . 'Controller');
        if(file_exists(__DIR__.'/Controller/'.$controller.'.php')){
            require_once(__DIR__.'/Controller/'.$controller.'.php');
        }
        $action = 'indexAction';
        return call_user_func_array(array($controller, $action), []);
    }

и в папке Controller создаем AddressController

class AddressController {
    public function indexAction()
    {
        echo "Address Controller";
    }
}

P.S. это крайне примитивный и простейший пример как вызвать контроллер и класс.

READ ALSO
Отправить svg файл по почте

Отправить svg файл по почте

Создал svg файл, нужно его отправить по почте, но я что-то делаю не так:

134
Почему одинаковые программы на Python и Java работают по разному (или почти одинаковые)?

Почему одинаковые программы на Python и Java работают по разному (или почти одинаковые)?

Вы, наверное, посчитаете этот вопрос глупым, но все же

153
Удалённый дебаг Java приложения

Удалённый дебаг Java приложения

Есть VPS сервер на Debian 9На сервере крутится одно самописное Java приложение

95
ResultSet возвращает неверное время из DATETIME

ResultSet возвращает неверное время из DATETIME

ResultSet возвращает неверное время из DATETIMEПри извлечении значения времени количество часов увеличивается на 3, т

77