public function mvcRouter($request)
{
// parse the request
$request = $this->str($request)->trimLeft('/')->trimRight('/')->explode('/');
if ($request->count() < 2) {
throw new BootstrapException('Unable to route this request.');
}
// extract the url parts
$module = $this->str($request[0]);
$controller = $this->str($request[1]);
$action = isset($request[2]) ? $this->str($request[2]) : $this->str('index');
$params = [];
if ($request->count() >= 4) {
$params = $request->slice(3, $request->count())->val();
}
// check if we need to normalize the request parts
if ($module->contains('-')) {
$module = $module->replace('-', ' ')->caseWordUpper()->replace(' ', '');
} else {
$module = $module->charFirstUpper();
}
if ($controller->contains('-')) {
$controller = $controller->replace('-', ' ')->caseWordUpper()->replace(' ', '');
} else {
$controller = $controller->charFirstUpper();
}
if ($action->contains('-')) {
$action = $action->replace('-', ' ')->caseWordUpper()->replace(' ', '');
}
// call the dispatcher
return $this->dispatchMvc($module->val(), $controller->val(), $action->val(), $params);
}