一个轻量级、简单易用的应用请求路由器。

v1.0.2 2022-07-12 19:27 UTC

This package is auto-updated.

Last update: 2024-09-13 06:03:37 UTC


README

更多详情,请查看库内示例文件夹。它没有依赖项。您可以用任何服务器使用它,包括PHP的内置服务器。在您下载组件的文件夹中打开终端,运行以下命令

php -S localhost:80 -t .

php -S localhost:80

如果遇到问题,只需将80改为另一个端口号。有关PHP内置Web服务器的更多信息,请参阅https://php.ac.cn/manual/en/features.commandline.webserver.php

它的使用极其简单!

我建议您在公共文件夹的根目录下创建一个index.php文件,该文件将在服务器从您的应用页面上接收到请求时被访问,并调用composer自动加载来加载Route,如下所示

<?php
require __DIR__ . '/path/to/vendor/autoload.php';

首先,实例化实现Route\Route\RouteInterface接口的Route\Route\Route类。

$route = new Route\Route\Route();

Route组件支持应用中最常见的五种HTTP方法,GET、POST、PUT、PATCH和DELETE。

要定义路由,调用Route\Route\RouteInterface接口的一个方法,传递一个路由和处理函数作为参数

$route->get('/route-name', 'handler');

处理函数可以是类的方法或回调函数。

通过URL传递参数

Route支持友好URL,您可以在花括号内通过URL传递参数,而不使用查询字符串。记住,如果您愿意,仍然可以使用它们。

$route->get('/route-name/{foo}/{bar}', function (array $params) {
    print_r($params);
    echo '<p>Page content</p>';
});

响应其他HTTP方法

如果处理函数是类的方法,您必须在第二个参数中作为字符串写入类的完全限定名称,建议使用PSR-4,由字符@与方法分隔。

$route->get('/route-one', 'VendorNamespace\SubNamespace\ControllerName@methodA');
$route->post('/route-two', 'VendorNamespace\SubNamespace\ControllerName@methodB');
$route->put('/route-three', 'VendorNamespace\SubNamespace\ControllerName@methodC');
$route->patch('/route-four', 'VendorNamespace\SubNamespace\ControllerName@methodD');
$route->delete('/route-five', 'VendorNamespace\SubNamespace\ControllerName@methodE');

分发路由

定义了您的Web应用的所有路由后,调用run()方法,它将根据访问的URI进行路由。

$route->run();

要捕获错误,只需在run()之后调用getError()方法,它将返回包含错误信息的对象。就像不存在路由的情况一样。

if ($error = $route->getError()) {
    // Handle errors here.
    $code = $error->getHttpErrorCode();
    $message = $error->getHttpErrorMessage();
    echo "Error {$code}, {$message}!";
}

查看示例文件夹