<?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']);とすると、メソッドは呼べますが継承されません。