404 Not Found'; exit; } // Remove the base path from the URL // and strip the trailing slash from the resulting route if (strpos($path, $config->basePath) === 0) { $path = substr($path, strlen($config->basePath)); } $path = trim($path, '/'); function route($pattern, $callback, $methods = ['GET']) { global $path, $method; if (!in_array($method, $methods)) { return false; } // Convert route pattern to regex $pattern = preg_replace('/\{([^}]+)\}/', '([^/]+)', $pattern); $pattern = '#^' . $pattern . '$#'; if (preg_match($pattern, $path, $matches)) { array_shift($matches); // Remove full match call_user_func_array($callback, $matches); return true; } return false; } // Set content type header('Content-Type: text/html; charset=utf-8'); echo "Path: " . $path; // routes route('', function() use ($isLoggedIn, $config, $user) { $page = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1; $limit = $config->itemsPerPage; $offset = ($page - 1) * $limit; $ticks = iterator_to_array(stream_ticks($limit, $offset)); $vars = [ 'isLoggedIn' => $isLoggedIn, 'config' => $config, 'user' => $user, 'ticks' => $ticks, ]; echo render_template(TEMPLATES_DIR . "/home.php", $vars); });