2017-12-26 10 views

Antwort

1

Hängt davon ab, was Sie mit "Standardaktion" meinen.

Wenn Sie meinen, „wie kann ich die '/' Route index() Methode auf meiner HomeController Klasse zum gehen“, dann eine vereinfachte Version der verknüpften Github Ausgabe (und the AltoRouter website) gelten würde:

$router = new AltoRouter(); 
$router->setBasePath('/example.com'); 
$router->map('GET','/', 'HomeController#index'); 
$match = $router->match(); 

if ($match === false) { 
    header($_SERVER["SERVER_PROTOCOL"].' 404 Not Found'); 
} else { 
    list($controller, $action) = explode('#', $match['target']); 
    if (is_callable([$controller, $action])) { 
     $obj = new $controller(); 
     call_user_func_array([$obj, $action], [$match['params']]); 
    } else { 
     // here your routes are wrong. 
     // Throw an exception in debug, send a 500 error in production 
    } 
} 

Die # ist hier völlig willkürlich, es ist nur ein Trennzeichen, um den Namen des Controllers von der aufgerufenen Methode zu trennen. verwendet eine @ für eine ähnliche Art von Router-zu-Controller-Notation (d. H. [email protected]).

Wenn Sie gemeint „im Zweifelsfall die Homepage als Standardaktion zeigen“, dann wäre es auf die oben ziemlich ähnlich aussehen, der einzige Unterschied wäre, dass der 404-Pfad einfach wäre:

if ($match === false) { 
    $obj = new HomeController(); 
    $obj->index(); 
} else { 
    // etc. 
}