Я пишу небольшую систему маршрутизации для проекта. Это не идеальный вариант, и это нестандартное решение, которое отображает URL-адрес в своих шаблонах по запросу пользователя. Я хочу создать динамическую страницу на основе уникального идентификатора для каждого события, вставленного пользователем в базу данных. Поэтому, если пользователь запросит событие 1234, он получит страницу с подробным описанием события по URL-адресу https://mysitedomain.com/event/1234
. Мне нужно понять, как добиться этого с моим кодом, я использую фронт-контроллер и красный бин в качестве ORM для доступа к базе данных.
Вот код моего роутера. Любое предложение будет оценено. сейчас я могу обслуживать только шаблоны.
<?php
namespace Router;
define('TEMPLATE_PATH', dirname(__DIR__, 2).'/assets/templates/');
class Route {
private static $assets = ['bootstrap' => 'assets/css/bootstrap.min.css',
'jquery' => 'assets/js/jquery.min.js',
'bootstrapjs' => 'assets/js/bootstrap.min.js',
];
public static function init()
{
if( isset($_SERVER['REQUEST_URI']) ){
$requested_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH);
if( $requested_uri === '/' ){
echo self::serveTemplate('index', self::$assets);
}
elseif( $requested_uri != '/' ){
$requested_uri = explode('/', $_SERVER['REQUEST_URI']);
if( $requested_uri[1] === 'event' ){
echo self::serveTemplate('event', self::$assets, ['event_id' => 001] );
}
else{
echo self::serveTemplate($view, self::$assets);
}
}
}
}
private static function serveTemplate(string $template, array $data, array $event_id = null)
{
if( !is_null($event_id) ){
$data[] = $event_id;
ob_start();
extract($data);
require_once TEMPLATE_PATH."$template.php";
return ob_get_clean();
}
else{
ob_start();
extract($data);
require_once TEMPLATE_PATH."$template.php";
return ob_get_clean();
}
}
}
?>