Всем привет. Пытаюсь создать простую 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)но куда дальше?
Цель роутера, не получить урл который ввел пользователь (т.к. его можно получить просто из $_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. это крайне примитивный и простейший пример как вызвать контроллер и класс.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей