PHP AltoRouter - не удается получить запрос GET

Я почему-то не могу запустить 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');

1 ответ

Решение

Ваша проблема в том, что 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');
}

И вуаля - теперь вы получите желаемый результат!

Другие вопросы по тегам