По какой-то причине я не могу запустить AltoRouter. Я пытаюсь сделать самый простой звонок, но ничего не происходит. Как я могу заставить это работать?
мой index.php файл выглядит так:
<?php
include('settings/autoload.php');
use app\AltoRouter;
$router = new AltoRouter;
$router->map('GET', '/', function(){
echo 'It is working';
});
$match = $router->match();
autoload.php:
<?php
require_once('app/Router.php');
Ваша проблема в том, что AltoRouter, в соответствии с документация (и в отличие от Slim Framework, который кажется иметь тот же синтаксис), не будет обрабатывать запрос для вас, это только Матчи их.
Итак, позвонив $router->match()
Вы получаете всю необходимую информацию для обработки запроса любым удобным для вас способом.
Если вы просто хотите вызвать функцию закрытия, просто измените ваш код:
<?php
// include AltoRouter in one of the many ways (Autoloader, composer, directly, whatever)
$router = new AltoRouter();
$router->map('GET', '/', function(){
echo 'It is working';
});
$match = $router->match();
// Here comes the new part, taken straight from the docs:
// call closure or throw 404 status
if( $match && is_callable( $match['target'] ) ) {
call_user_func_array( $match['target'], $match['params'] );
} else {
// no route was matched
header( $_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
}
И вуаля — теперь вы получите желаемый результат!
Других решений пока нет …