@niriter
User

Роутинг на PHP?

Есть запрос, на страницу example.com/admin/edit, нужно что бы был роутинг типа
class admin {
    function edit()
    {
        ...
    }
}

Не могу придумать ничего путевого что бы так реализовать...

p.s. .htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /switcher.php?$1 [QSA,L]
</IfModule>
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
Зависит от задачи, насколько сложный роутинг требуется

Вот есть видео об устройстве роутинга в современных фреймворках. Посмотрите не поленитесь, лучше чем велосипеды городить.

https://elisdn.ru/blog/113/psr7-framework-http
https://elisdn.ru/blog/114/psr7-framework-router

Уже был похожий вопрос на тостере.
Как сделать простой php маршрутизатор (роутер)?

Если надо быстро и по тупому - то просто берем строку из $_SERVER['REQUEST_URI'], парсим ее и получаем из нее имя контроллера и экшена, сложно что ли?
<?php
class admin{
    function edit(){
        echo "Hello World";
    }
}
//парсим REQUEST_URI
$explode = explode('/',$_SERVER['REQUEST_URI']);
//выбираем имя контроллера и метода
$controllerClass = $explode[1];
$action = $explode[2];
//вызываем
call_user_func_array([$controllerClass,$action],[]);


Ну и под конец https://google.gik-team.com/?q=%D0%A0%D0%BE%D1%83%...
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
m0pfin
@m0pfin
phpНУБ
В микрофреймворке Slim хороший роутинг
Ответ написан
@DiaTMs
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php

#RewriteRule (.*) index.php?url=$1 [L,QSA]
Ответ написан
codeturn
@codeturn
Передавайте все на index.php а потом из $server получаете полный запрос, разбиваете его и подключаете нужный класс. А лучше забросить эту идею и начать изучать какой-нибудь фреймворк.
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
mvc?

class AdminController extends BaseController{
    
    public function __construct(){
        parent::__construct();
    }

    public function editAction(){
        doSomeEdit();
        $this->view->renderView();
    }
}


BTW: что за тег сетевая маршрутизация в вопросе???
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
IMAGINWEB Москва
от 55 000 до 85 000 руб.
Владис Владимир
от 100 000 до 150 000 руб.
Индекс.СРО Ростов-на-Дону
от 45 000 до 70 000 руб.