Простой роутер на рhp /

Класс для гибкой настройки роутинга для небольшого проекта. Легко использовать и внедлять в проект.

22 / 09 / 2020 125 php, seo Aвтор: Фрилансер

Простой роутер на рhp

 

Супер-компактный клас для роутринга

<?php 
/*
* Route.php 
*/

 class Router
{
    // массив для хранения соответствия url => функция
    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));
            }
        }
    }
}

.htaccess


RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L,QSA]

Как использовать index.php 

require 'router.php'; // Подключаем класс

Router::route('/', function(){

// главная страничка

});


// example.com/products/shkafy/test
Router::route('/products/(\w+)/(\w+)', function($categoty,$product){
//$categoty  - shkafy
//$product - test

});

Router::execute($_SERVER['REQUEST_URI']);

 

3 случайных Поста

Card image cap
Как передать в Google сведения о контенте, разбитом на страницы wordpress
Card image cap
Cron wordpress
Card image cap
Хлебные крошки worpdress от Kama_Breadcrumbs с itemprop="position"

коммент.

Freelancehunt.com — простой и честный фриланс Freelancehunt.com — простой и честный фриланс © SiteBlog designer