ilias/rhetoric

针对使用PHP处理路由的包

1.0.1 2024-08-06 23:27 UTC

This package is auto-updated.

Last update: 2024-09-06 23:41:34 UTC


README

Maintainer Package Source Code Software License

这个PHP路由系统允许您以简单和有序的方式定义和管理应用程序的路由,灵感来源于Laravel的路由系统。

安装

要安装此包,将其添加到您的 composer.json 文件中

{
  "require": {
    "ilias/rhetoric": "1.0.0"
  }
}

或者简单地运行终端命令

composer require ilias/rhetoric

然后,运行以下命令来安装包

composer install

用法

步骤 1: 定义您的路由

创建一个文件来定义您的路由,例如,在您的项目根目录中,命名为 routes.php

<?php

use Ilias\Rhetoric\Router\Router;

Router::get("/", IndexController::class . "@handleApiIndex");
Router::get("/favicon.ico", IndexController::class . "@favicon");

Router::get("/asset", AssetController::class . "@instruction");

Router::group(['prefix' => '/asset'], function ($router) {
  $router->group(['prefix' => '/type/{type}'], function ($router) {
    $router->get("/name/{name}", AssetController::class . "@getAssetByName");
    $router->get("/id/{id}", AssetController::class . "@getAssetById");
  });
});

Router::get("/debug", DebugController::class . "@showEnvironment");

步骤 2: 设置路由器

在应用程序的入口点,通常是 index.php,设置路由器以处理传入的请求

<?php

require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/routes.php';

use Ilias\Rhetoric\Router\Router;

Router::setup();

步骤 3: 创建控制器

创建您的控制器类以处理请求。例如,创建 IndexController.php

<?php

namespace Ilias\Rhetoric\Controller;

class IndexController
{
  public function handleApiIndex()
  {
    echo "Welcome to the API!";
  }

  public function favicon()
  {
    // Handle favicon request
  }
}

类似地,根据需要创建其他控制器类,如 AssetController.phpDebugController.php

步骤 4: 处理中间件(可选)

如果您想使用中间件,创建一个实现 Ilias\Rhetoric\Middleware\Middleware 的中间件类

<?php

namespace Ilias\Rhetoric\Middleware;

use Ilias\Rhetoric\Middleware\Middleware;

class ExampleMiddleware implements Middleware
{
  public static function handle()
  {
    // Middleware logic here
  }
}

然后,将中间件应用于您的路由或路由组

Router::get("/protected", IndexController::class . "@protectedMethod", [ExampleMiddleware::class]);

Router::group(['prefix' => '/admin', 'middleware' => [ExampleMiddleware::class]], function ($router) {
  $router->get("/dashboard", AdminController::class . "@dashboard");
});

步骤 5: 分发路由

使用 Request 静态方法 dispatch(),您可以处理当前路由

<?php

Request::dispatch($requestMethod, $requestUri);

动态参数

使用 Request 静态属性 $params,您可以访问一个关联数组

<?php

Router::get("/user/{username}/config", Authenticate::class . "@userConfigurations");

当您访问路由 http://your.dev.api.com/user/iloElias/config 时,参数将存储在 Request::$params 中,如下所示

echo Request::$params["username"] //"iloElias"

说明

  • ::class

    建议使用对您的类的静态引用,以便代码确切知道要使用哪个类