<?php
require_once __DIR__ . '/../vendor/autoload.php';

$router = new AltoRouter();

$router->map('GET|POST','/',
  'App\TopController::index',
  'home'
);

$match = $router->match();

if( is_array($match) && is_callable( $match['target'] ) ) {
  $params = explode("::", $match['target']);
  $action = new $params[0]();
  call_user_func_array(array($action, $params[1]) , $match['params']);
} else {
  header( $_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
}

AltorouterというPHPのルーターライブラリで、Laravelのrouterに似た書き方でroutingする方法です。TopControllerはControllerを継承しているので、この書き方になります。Altorouterの例文通りに、call_user_func_array($match['target'], $match['params']);とすると、メソッドは呼べますが継承されません。

参考:Processing Requests | Altorouter