lumax/routing-component

一个动态的PHP路由组件。

1.6.2 2024-07-15 20:48 UTC

README

Version 1.6.2 PHP Coverage 77.49% License GPL--3.0--or--later

路由组件是一个轻量级且灵活的PHP包,用于处理Web应用程序中的路由。它提供了一种简单的方法来定义路由并基于传入的HTTP请求执行控制器操作。此组件旨在轻松集成到您的PHP项目中,并与PSR-11兼容的依赖注入容器无缝协作。

安装

您可以使用Composer安装此包

composer require lumax/routing-component

用法

基本用法

创建Router实例

创建一个实现了Psr\Container\ContainerInterface的依赖注入容器的Router类的实例

use Luma\RoutingComponent\Router;
use Psr\Container\ContainerInterface;

$router = new Router($container);

加载路由

从YAML配置文件加载您的应用程序的路由

$router->loadRoutesFromFile('routes.yaml');

示例YAML配置(routes.yaml

routes:
  index:
    path: /
    handler: [App\Controllers\HomeController, index]
  user_index:
    path: /user/{id}
    handler: [App\Controllers\UserController, show]

或者,如果您愿意,也可以从数组中加载您的路由

$routes = [
    [
        'path' => '/',
        'handler' => [
            'App\\Controllers\\HomeController',
            'index',
        ]       
    ],
    [
        'path' => '/user/{id}',
        'handler' => [
            'App\\Controllers\\UserController',
            'show',
        ]       
    ],
];

$router->loadRoutes($routes);

处理请求

在应用程序的入口点(例如,index.php),调用handleRequest方法来处理传入的HTTP请求

$router->handleRequest($request);

handleRequest方法期望一个Psr\Http\Message\RequestInterface的实例。此路由组件需要我的HTTP组件,因此已经提供了RequestResponse类。

路由器将匹配请求URI到定义的路由,并执行相应的控制器操作。

控制器操作

控制器操作定义为包含控制器类名和方法名的数组

['App\Controllers\HomeController', 'index']

依赖项

Router类旨在与依赖注入容器无缝协作。您可以通过构造函数注入将依赖项注入到您的控制器操作中。当控制器被实例化时,路由器将自动从容器中解析和注入其依赖项。需要PSR-11兼容的ContainerInterface实例。

错误处理

路由器处理未处理的路由的404未找到错误。如果没有找到匹配的路由,它将响应404状态码。

许可

此软件包是开源软件,受GNU通用公共许可证版本3.0(GPL-3.0)许可。