What are the steps to build a basic PHP router?

RMAG news

In my previous project, I have a direct mapping between a file path , address bar and a controller. If I visit contact well, I have contact.php in address bar and sure enough contact.php in controller directory. But I want to change all of that.
Instead I want a single point of entry where I can be responsible for mapping whatever is in URI to the corresponding controller.

what is router in PHP?

In PHP, a router is a component that plays a crucial role in handling HTTP requests and routing them to the appropriate controllers or handlers. It acts as a central dispatcher, directing incoming requests to the relevant code that processes the request and generates a response.

Basic steps to build router

Firstly you have to make a directory named controller and then grab the previous project files about,index and control.php
and then paste these in it.

Next you have to create a file functions.php that stores information about different functions working stored inside it .
In this a function dd(); dump and die is used. Dump in PHP is used to get multiple outputs of single variable and is in human readable form.

<?php

function dd($value)
{
echo “<pre>”;
var_dump($value);
echo “</pre>”;

die();
}

function urlIs($value) {
return $_SERVER[‘REQUEST_URI’] === $value;
}

As the dd(); function is completed then next function is checked according to the value that is given to it. It checks the equality of value and request URL and then passes to superglobal variable `$_SERVER.
The next step is to check the route of desired value and move the user to its destination.

Routes corresponding to the value

Here is to initialise the routes for the desired URLs in code. As when user taps contact in menu bar move user to contact screen, show output there. Different routes are available here for router to locate and go to desired one.

`php

<?php

$uri = parse_url($_SERVER[‘REQUEST_URI’])[‘path’];

$routes = [
‘/’ => ‘controllers/index.php’,
‘/about’ => ‘controllers/about.php’,
‘/contact’ => ‘controllers/contact.php’,
];

function routeToController($uri, $routes) {
if (array_key_exists($uri, $routes)) {
require $routes[$uri];
} else {
abort();
}
}

function abort($code = 404) {
http_response_code($code);

require “views/{$code}.php”;

die();

}

routeToController($uri, $routes);

`

If the user enters a wrong value or hits the tab whose data is not present in main file then it moves the user to file 404.php which shows 404 error page to user with text link in blue colour “Go to Home Page”

`php
<?php require(‘partials/head.php’) ?>
<?php require(‘partials/nav.php’) ?>

Sorry. Page Not Found.

<p class=”mt-4″>
<a href=”/” class=”text-blue-500 underline”>Go back home.</a>
</p>
</div>

`

While the remaining code of previous project will remain same to show an output screen that contains a TabBar with icon, button, logo and profile picture etc.
Routers typically performs the task of route mapping and generates the url to move user to the corresponding controller page or screen.
I hope that you have understand it.