بهتر شده
همه فریم ورک ها mvc آدرس رو با GET میفرستن و میگیرن یه چیزی شبیه به این

site.com/index.php?address=controller/function


ولی البته با htaccess آدرس ها رو جوری بازنویسی میکنن که به ای نشکل دیده بشه
site.com/controller/function

تو فریم ورک ها یک کلاس هست به اسم route.php که توی اون همه آدرس ها رو تعریف میکنی و مشخص میکنی که هر آدرس به کدوم کنترلر باید بره و کدوم متد یا تابع کنترلر رو باید اجرا کنه
بعد توی ویو یا توی Index.php با اون میخونی آدرس ها رو
مثلا

class Route{

public $address ;
public $name ;
public $controller ;
public $method ;
static $stack = [] ;

static function save($address , $controller_method , $name )
{
list($controller , $method ) = explode('@' , $controller_method);
$route= new Route();
$route->address = $address ;
$route->controller = $controller ;
$route->method = $method ;
$route->name = $name ;
self::$stack[] = $route ;
return $route ;
}

static function name($name){

foreach(self::$stack as $route )
if($route->name == $name)
return $route->address ;
}

static function address( $address ){

foreach(self::$stack as $route )
if($route->address == $address)
return $route ;
}


}

Route::save('/login' , 'UserController@login' , 'login_route');
Route::save('/register' , 'UserController@register' , 'register_route');


بعد توی ویوهات وقتی مخای آدرس بدی بجای اینکه خود آدرس رو بنویسی اینجوری با کلاس چاپشون میکنی
echo Route::name('login_route');


مزیتش اینه که پسفردا اگه آدرس هات تغییر کرد دیگه نمیخاد بری توی تک تک ویو هات تغییر بدی

توی index.php هم وقتی میخای ببینی این آدرسی که کاربر زده باید چه کنترلر و ویویی رو لود کنه
Route::
address
رو اجرا میکنی و اون بهت یه شی رو برمیگردونه که حاوی نام کنترلر و متدشه

اگه همه فایل های ویوت از index.php لود میشن دیگه نیاز نداری توی ویو ها config.php رو اینکلود کنی تو ایندکس بزارش