@mrx_lol
PHP

PHP вместо /post.php?id=2 надо /post?id=2...?

Итак ребят я тут пишу небольшой api на PHP и нужно реализовать страницы по типу post на которых будут отображаться посты, но я знаю только один способ по типу /page.php?id=34 а я хочу тип как у Laravel /page?id=34
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
@mrx_lol Автор вопроса
PHP
Я уже нашел способ простой реализации роутов:

<?php

class Router {

    private static $routes = array();

    private function __construct() {}
    private function __clone() {}

    public static function route($pattern, $callback) {

        $pattern = '/^' . str_replace('/', '\/', $pattern) . '$/';
        self::$routes[$pattern] = $callback;

    }

    public static function execute($url) {

        foreach (self::$routes as $pattern => $callback) {

            if (preg_match($pattern, $url, $params)) {
                array_shift($params);
                return call_user_func_array($callback, array_values($params));
            }

        }

    }


}

Router::route('/', function() {
    echo "Home page";
});

Router::route('/page/(\w+)', function (int $id) {
    echo "Page is\t" . $id;
});

Router::execute($_SERVER['REQUEST_URI']);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
@BorisKorobkov Куратор тега PHP
Web developer
Apache/Nginx все запросы перенаправляют на единственную точку входа (index.php).
Роутер разбирает URL запроса и передаёт управление нужному контроллеру.

Только не надо изобретать велосипед, а возьми любой современный фреймворк (микро-фреймвокр)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы