Мне нужно использовать плагин маршрутизации для php, и я решил использовать nikic/FastRoute [https://github.com/nikic/FastRoute]. Но из-за моих ограниченных знаний для php я все еще не могу использовать его успешно.Маршрутизация Lib для PHP7
Вот мой код.
require_once 'FastRoute/src/functions.php';
# create a stack of actions
$dispatcher = FastRoute\simpleDispatcher(function(FastRoute\RouteCollector $r) {
$r->addRoute('GET', '/', 'get_all_users_handler');
// {id} must be a number (\d+)
$r->addRoute('GET', '/contract-management', 'get_user_handler');
// The /{title} suffix is optional
$r->addRoute('GET', '/articles/{id:\d+}[/{title}]', 'get_article_handler');
});
// Fetch method and URI from somewhere
$httpMethod = $_SERVER['REQUEST_METHOD'];
$uri = $_SERVER['REQUEST_URI'];
// Strip query string (?foo=bar) and decode URI
if (false !== $pos = strpos($uri, '?')) {
$uri = substr($uri, 0, $pos);
}
$uri = rawurldecode($uri);
$routeInfo = $dispatcher->dispatch($httpMethod, $uri);
switch ($routeInfo[0]) {
case FastRoute\Dispatcher::NOT_FOUND:
// ... 404 Not Found
break;
case FastRoute\Dispatcher::METHOD_NOT_ALLOWED:
$allowedMethods = $routeInfo[1];
// ... 405 Method Not Allowed
break;
case FastRoute\Dispatcher::FOUND:
$handler = $routeInfo[1];
$vars = $routeInfo[2];
// ... call $handler with $vars
break;
}
function get_user_handler(){
print_r("here");
}
function get_article_handler(){
print_r("article handler");
}
Я просто изменил запрос '/path/to/vendor/autoload.php'; для require_once 'FastRoute/src/functions.php'; из примера кода. Но приведенная ниже ошибка показана.
Неустранимая ошибка: нечистая ошибка: Class 'FastRoute \ RouteCollector' не найден в C: \ wamp \ www \ testproj \ includes \ FastRoute \ src \ functions.php: 21 Трассировка стека: # 0 C: \ wamp \ www \ testproj \ includes \ routing.php (13): FastRoute \ simpleDispatcher (Object (Closure)) # 1 C: \ wamp \ www \ testproj \ index.php (9): require_once ('C: \ wamp \ www \ testp ... ') # 2 {main}, брошенный в C: \ wamp \ www \ testproj \ includes \ FastRoute \ src \ functions.php в строке 21
Я думаю, что я сделал что-то неправильно с настройкой. Но я все еще не могу найти лучшего образца для новичков. Итак, пожалуйста, укажите мне, где я сделал неправильно. Заранее спасибо.
Вы уже упоминали об ошибке: «Я только что изменил запрос« /path/to/vendor/autoload.php »; для require_once« FastRoute/src/functions.php »из кода примера». Поиск PHP-композитора и автозагрузки. –
Спасибо Olaf Dietsche. Я не понимал, что этот композитор или автозагрузка имеют такой эффект. Но у меня все еще есть вопрос. Не могу ли я просто не устанавливать этот PHP-компилятор для использования таких библиотек? Есть ли способ загрузки библиотеки без установки композитора? Я не хочу устанавливать это на всех живых серверах и локальном, чтобы использовать эту lib. Или у меня нет выбора? –
Когда вы каким-то образом меняете программу, а затем перестаете работать, просто возвращайте свое изменение и видите, если оно решает проблему. Затем вы можете посмотреть соответствующий код и попытаться понять, как код (или его отсутствие) влияет на вашу программу. –