meowphp/routing

可扩展的路由器

v0.1.0 2021-11-11 20:53 UTC

This package is auto-updated.

Last update: 2024-09-12 02:58:10 UTC


README

使用属性定义路由到方法的可扩展路由器

安装

您可以使用以下命令通过composer安装此库:

composer require meowphp/routing

用法

注册控制器

此路由器需要在数组中静态注册控制器。为此,请在您的应用程序中添加一个包含控制器类字符串的数组。

/**
 * Register your application's controller here
*/
$controllers => [
    \May\AttributesTest\MainController::class,
    \May\AttributesTest\Controllers\ExampleController::class
],

定义路由

要定义到操作的路线,请使用您的方法的Route属性。

# Route without attributes
#[Route('/hello/{id}/{surname}')]
public function sayHello() : string

# Route with attributes
#[Route("/good-bye")]
public function sayGoodBye() : string

# Default route
#[Route('/')]
public function index() : string

获取新的路由器实例

要获取新的路由器,请使用以下脚本。

$router = \Meow\Routing\Router::getRouter($controllers);

解析路由

$calledRoute = $this->router->matchFromUri('/your/route');

获取控制器和操作

上面的代码将返回路由的实例,要获取控制器和操作,请使用以下函数:

$calledRoute->getController();
$calledRoute->getMethod();

获取参数

if ($calledRoute->hasParameters()) {
    $request = $calledRoute->getParameters();
}

前缀

前缀可以应用于路由器类。应用它们之后,路由器以/{prefix}/{action}开始。因此,您不必将路线定义为/users/action/users/action-two,而是可以使用前缀和/users,然后为操作定义路由,如/action/action-two。以下是一个示例:

#[Prefix('/api')]
class ExampleController extends AppController

许可证:MIT