How can PHP developers implement routing architecture in their applications to handle dynamic URL parameters effectively?

To handle dynamic URL parameters effectively in PHP applications, developers can implement a routing architecture that maps specific URLs to corresponding controller actions. This allows for cleaner and more organized code, as well as the ability to easily extract and use dynamic parameters from the URL.

// Define a routing table that maps URLs to controller actions
$routes = [
    '/user/{id}' => 'UserController@show',
    '/post/{slug}' => 'PostController@show'
];

// Parse the current URL and extract the controller action and parameters
$requestUri = $_SERVER['REQUEST_URI'];
foreach ($routes as $route => $controllerAction) {
    $pattern = str_replace('/', '\/', $route);
    if (preg_match('/^' . $pattern . '$/', $requestUri, $matches)) {
        $controllerActionParts = explode('@', $controllerAction);
        $controller = new $controllerActionParts[0];
        $action = $controllerActionParts[1];
        $params = array_slice($matches, 1);
        call_user_func_array([$controller, $action], $params);
        break;
    }
}

// Example controller action implementation
class UserController {
    public function show($id) {
        echo "Showing user with ID: $id";
    }
}

class PostController {
    public function show($slug) {
        echo "Showing post with slug: $slug";
    }
}