lumax / routing-component
一个动态的PHP路由组件。
1.6.2
2024-07-15 20:48 UTC
Requires
- lumax/framework-component: ^1.0
- lumax/http-component: ^2.2
- lumax/security-component: ^1.3
- psr/container: ^2.0
- psr/http-message: ^2.0
- symfony/yaml: ^6.3
Requires (Dev)
- phpunit/phpunit: ^10.3
README
路由组件是一个轻量级且灵活的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组件,因此已经提供了Request
和Response
类。
路由器将匹配请求URI到定义的路由,并执行相应的控制器操作。
控制器操作
控制器操作定义为包含控制器类名和方法名的数组
['App\Controllers\HomeController', 'index']
依赖项
Router
类旨在与依赖注入容器无缝协作。您可以通过构造函数注入将依赖项注入到您的控制器操作中。当控制器被实例化时,路由器将自动从容器中解析和注入其依赖项。需要PSR-11兼容的ContainerInterface
实例。
错误处理
路由器处理未处理的路由的404未找到错误。如果没有找到匹配的路由,它将响应404状态码。
许可
此软件包是开源软件,受GNU通用公共许可证版本3.0(GPL-3.0)许可。