niltonduarte / route
一个轻量级、简单易用的应用请求路由器。
Requires
- php: >=7.4
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}!"; }